2015-12-17 6 views
0

Я сделал навигацию в Zend Framework 2, используя глобальный файл, расположенный в config/autoload. как я могу получить в этом глобальном файле параметры маршрута?Zend Framework 2: Динамическая навигация и сухари

Я попытался это:

$helper = new Zend\View\Helper\ServerUrl(); 
$active_url = $helper->getHost(); 

но это возвращает весь URL. Для exemle У меня есть URL-адрес, как этот

www.mysite.com/controller/action/id/3 

мне нужно знать идентификатор.

Мой глобальный файл возвращает массив навигации, который выглядит следующим образом:

return array(
    'navigation' => array(
     'default' => array(
      array(
       'label'  => 'Home', 
       'route'  => 'admin', 
       'active'  => true, 
       'resource' => 'Admin\Controller\Index', 
       'privilege' => 'index', 
       'pages'  => array(
        'label' => 'My posts ', 
        'route' => 'admin/default', 
        'params' => array(
         'controller' => 'posts', 
         'action' => 'edit' 
        ), 
        'resource' => 'Admin\Controller\Posts', 
        'privilege' => 'edit', 
       ), 
      ) 
     ) 
    ) 
); 

Это все работает прекрасно, пока маршрут не содержит параметров. Если в моем URL-адресе содержатся параметры идентификатора, моя ссылка на меню и панировочные сухари формируются только с контроллером и действием без идентификатора и в том же.

Таким образом, вместо того, чтобы:

www.mysite.com/posts/edit/id/12 

Моя ссылка выглядит следующим образом:

www.mysite.com/posts/edit 
+0

Почему вы хотите это сделать? Глобальные и локальные файлы в папке 'config/autoload' должны ** ** использоваться ** только для объявления констант, а не для динамического содержимого. Если вы сделаете это, у вас возникнут проблемы. Трудно дать альтернативное решение, если вы не добавите более подробную информацию о том, что именно вы пытаетесь достичь ... – Wilt

+0

Конфигурация загружается до того, как произойдет маршрутизация. Вы не сможете это сделать. –

+0

@Wilt Я отредактировал мое сообщение. – Andreea

ответ

1

Что вы ищете динамические сухари. Не так часто связывать панировочные сухари, чтобы направить параметры, но вы можете найти вопрос с ответом here on stackoverflow.

Как указано в the documentation here, с версии ZF2 2.2.0 есть флаг 'useRouteMatch', который вы можете установить на true.

Начиная с версии 2.2.0, если вы хотите повторно использовать любые параметры согласованного маршрута при создании ссылки, вы можете сделать это с помощью флажка «useRouteMatch». Это особенно полезно при создании маршрутов сегмента, которые включают в себя текущий выбранный язык или локаль в качестве начального сегмента, поскольку он обеспечивает, чтобы все созданные ссылки включали согласованное значение.

Вместо того, чтобы вручную проходя ваш params arary навигатор будет использовать params от RouteMatch. Таким образом, вы также получите свой идентификатор.

array(
    'label' => 'My posts', 
    'route' => 'admin/default', 
    'useRouteMatch' => true 
), 

Примечание Вы сказали, что вы определили вашу навигацию в global файл в папке autoload/config. Было бы лучше реализовать навигацию в вашем module.config.php, как показано на рисунке here in this tutorial.