Я строю меню, используя навигацию. В моем файле конфигурации, я использую URI (я не мог получить маршрут, контроллер действия для корректной работы)zf2 Навигация isActive не работает с uri
'navigation' => array(
'default' => array(
array(
'label' => 'Home',
// not sure why I can't use route, controller, action...
// for now, i'm using uri
'uri' => '/',
),
array(
'label' => 'About us',
'uri' => '/application/intro',
), ...
маршрут Прикладной модуль является по умолчанию один, установить в качестве такого
'application' => array(
'type' => 'Literal',
'options' => array(
'route' => '/application',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
Теперь IsActive не работает, на мой взгляд (частичное) при вызове
<?php foreach ($this->container as $page): ?>
<li <?php echo $page->isActive()? 'class="' . $activeClass . '"' : '' ?>>
...
когда я попытался сделать это вручную, я пытаюсь сравнить с $ this-> URL. Я понял, что $ this-> url возвращает путь к маршруту. Значение, в моем примере, когда я вхожу в/application/intro, $ this-> url будет возвращать только return/application /, а контроллер «intro» не возвращается.
Мой вопрос: как я могу вернуть URL-адрес с контроллером, действием и т. Д.? или что я могу сделать, чтобы убедиться, что isActive может работать правильно.
Заранее благодарен!
Джастин
Спасибо за примечание Рубен! Действительно ценю это. Я попытаюсь использовать $ this-> url() для проверки и setActive (хотя у меня все еще проблема, потому что $ this-> url() не возвращает URL-адрес с контроллером (/ application/вместо/application/intro). В стороне проблема, с которой я сталкиваюсь в использовании маршрутов, заключается в том, что контроллер и действие не создаются для href. При настройке маршрута к приложению и контроллеру для вступления, getHref() будет только возвращать/приложение (когда я надеюсь чтобы получить/приложение/введение). Держу пари, что это что-то немое, что я забыл. Любые советы? – juworld
Хм, позвольте мне понять это. Вы используете маршрут «приложение», поэтому, если этот маршрут определен как ваш OP, он всегда будет возвращать/применять, потому что это буквальный маршрут с свойством route, установленным в/application. Вероятно, вы хотите указать элемент навигации на дочерний маршрут маршрута приложения, так что, если вы попытаетесь установить маршрут application/default вместо? – Ruben
Спасибо, Рубен! Это определенно исправил его! Мне потребовались часы! Привет, Рубен! – juworld