Проблема с URL: Zend Navigation добавляет маршруты к URL - Как изменить отображение Zend навигации по умолчанию - PullRequest
0 голосов
/ 03 января 2011

Я переформулировал вопрос, чтобы показать, в чем была проблема.

Привет, Я создаю приложение cms с Zend Framework. Все работает нормально, кроме> URL. Когда я нажимаю на ссылку, которая указывает на:

'dep/open/id/001' 

Я получаю, но текст ссылки добавляется к URL. Если я теперь наведусь на> другую ссылку, я могу видеть в строке состояния:

отд / открыть / ID / DEP / открыть / ID / 023 '

и так далее.

Я не могу редактировать URL-адреса, потому что их отображает Zend_Navigation.

Как я могу изменить это?

Спасибо

Проблема заключалась в том, что я неправильно указывал Zend_Navigation uris:

public function renderAction()
{
    ...

        //THIS IS WRONG:
        $uri =  'dep/show/id/' . $dep->dept_id;
        ...

        $itemArray[] = array(
                    'label' =>$label,
                   'uri' => $uri
                   );
    }
    $container = new Zend_Navigation($itemArray);
        $this->view->navigation()->setContainer($container);
}

URI должен быть:

 $uri = $dep->dept_id;

Я думаю, это может быть потому, что я установил маршрут для 'dep'

$route = new Zend_Controller_Router_Route(
        'dep/show/:id',
        array(
            'action' => 'show',
            'controller' => 'dep',
            'module' => 'default',
            'id' => '',
            ),
        array( 
            'id' => '[0-9]+'
            )
        ); 

        $router->addRoute('dep', $route);

Может ли это быть причиной?

Еще раз спасибо

Ответы [ 2 ]

1 голос
/ 04 января 2011

Похоже, проблема в том, что вы предоставляете относительный URL:

$uri = 'dep/show/id/' . $dep->dept_id;

Так что на самом деле это браузер , который напортачил вам, интерпретируя этот URL относительно текущего URL.

Если вы создаете свой URL с базовым префиксом:

$uri = 'http://example.com/myapp/dep/show/id' . $dep->dept_id;

или даже:

$uri = '/myapp/dep/show/id' . $dep->dept_id;

тогда браузер будет воспринимать их как абсолютные (соответственно root-absolute), и вы должны быть в лучшей форме.

Обратите внимание, что baseUrl() доступен с фронт-контроллера.

0 голосов
/ 05 января 2011

После первого ответа на вопрос я продолжил экспериментировать с маршрутами и параметрами, передаваемыми в Zend_Navigation, и пришел к выводу, что на самом деле проблема заключалась в том, что я уже установил маршрут dep на:

'/dep/show/id' 

поэтому прохождение того же маршрута в параметре $ uri в Zend_Navigation привело к проблеме дублирования.

Похоже, что я не могу найти решения, пока не опубликую вопросы здесь Спасибо всем за терпение

...