Zend Создал маршрут, и теперь все ссылки используют этот URL

Я создал маршрут для просмотра профилей пользователей:

$router = Zend_Controller_Front::getInstance()->getRouter();
    $route  = new Zend_Controller_Router_Route(
            'profile/:username',
            array(
                'username'      => 'username',
                'module'        => 'core',
                'controller'    => 'profile',
                'action'        => 'view'   
            ) 
    );
    $router->addRoute('profile',$route);

Когда я захожу туда, все URL-адреса на странице теперь говорят http://127.0.0.1/project/public/profile.

Как я могу это исправить?


person somejkuser    schedule 24.01.2012    source источник
comment
Вы должны быть более конкретными, чтобы получить помощь. Как вы повторяете и создаете URL-адреса в представлениях?   -  person Aurelio De Rosa    schedule 25.01.2012
comment
ответил [Простые перезаписи] [1] [1]: stackoverflow.com/questions/8966643/simple-rewrites-in-zend/   -  person RockyFord    schedule 25.01.2012


Ответы (2)


Если вы используете помощник представления Url или Zend_Navigation, вам необходимо указать маршрут, который будет использоваться, если вы не хотите, чтобы он использовал текущий. Например...

Помощник просмотра URL

Используйте маршрут «по умолчанию»

<?php echo $this->url(array(
    'action'     => 'index',
    'controller' => 'index'
), 'default', true) ?>

Конфигурация навигации

resources.navigation.pages.home.label      = "Home"
resources.navigation.pages.home.action     = "index"
resources.navigation.pages.home.controller = "index"
resources.navigation.pages.home.module     = "default"

; Don't forget to set the route
resources.navigation.pages.home.route      = "default"

Приложение

Самый простой способ настроить маршруты — через ресурс Router. Попробуйте это в своей конфигурации вместо кода, который у вас есть

resources.router.routes.profile.route               = "profile/:username"
resources.router.routes.profile.defaults.module     = "core"
resources.router.routes.profile.defaults.controller = "profile"
resources.router.routes.profile.defaults.action     = "view"
person Phil    schedule 25.01.2012

Спасибо Фил! У меня была такая же проблема, и вы меня спасли;)

Просто для информации, для людей, которые используют структуру xml для Zend Navigation, просто добавьте для каждого маршрута.

Например :

<?xml version="1.0" encoding="UTF-8"?>
    <configdata>
        <nav>
            <myfirstroute>
                <label>...</label>
                <module>...</module>
                <controller>...</controller>
                <action>...</action>
                **<route>default</route>**
            </myfirstroute>

            <mysecondroute>
                <label>...</label>
                <module>...</module>
                <controller>...</controller>
                <action>...</action>
                **<route>default</route>**
            </mysecondroute>
            ...
        </nav>
    </configdata>

Увидимся !

person gwena    schedule 23.05.2013