Приложение перестает работать. Я использую этот = ›url ('router') в Zend Framework 2?

Маршрутизатор в порядке, он работает через адресную строку. Маршрутизатор в порядке, если я повторяю URL-адрес. Приложение перестает работать, если я повторяю $ this-> url ('routename')

Ребята, это роутер:

'ownedGoods' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route' => '/owned',
                    'defaults' => array(
                        'controller' => 'index\index',
                        'action' => 'indexOwned'
                    )
                )
            ),

это вызывается для контроллеров

'index\index' => 'AddGoods\Controller\IndexController',

Теперь, когда я открываю URL: http://goodsApp.localhost:88/owned, это работает

Проблема возникла, когда я разместил другие ссылки на панели навигации, где, как и другие ссылки, такие как «Добавить товары» и «Дом», работают, а принадлежащие - нет.

 <li class="active"><a href="<?php echo $this->url('home') ?>"><?php echo $this->translate('Home') ?></a></li>
 <li class="active"><a href="<?php echo $this->url('add') ?>"><?php echo $this->translate('Add a good') ?></a></li>
 <li class="active"><a href="<?php echo $this->url('owned') ?>"><?php echo $this->translate('My Goods') ?></a></li>

Приложение не запущено, контроллер и маршрут не совпадают. Даже не для домашней страницы, это показывает

Неперехваченное исключение «Zend \ Mvc \ Router \ Exception \ RuntimeException» с сообщением «Маршрут с именем« принадлежащий »не найден» в пути \ к \ app \ vendor \ zendframework \ zendframework \ library \ Zend \ Mvc \ Router \ Http \ TreeRouteStack. php: 313 Трассировка стека: # 0 путь \ к \ app \ vendor \ zendframework \ zendframework \ library \ Zend \ View \ Helper \ Url.php (100): Zend \ Mvc \ Router \ Http \ TreeRouteStack-> build (Array, Массив) # 1 [внутренняя функция]: Zend \ View \ Helper \ Url -> __ invoke ('own') # 2 # 2 путь \ к \ app \ vendor \ zendframework \ zendframework \ library \ Zend \ View \ Renderer \ PhpRenderer. php (400): call_user_func_array (Object (Zend \ View \ Helper \ Url), Array) # 3 путь \ к \ app \ module \ Application \ view \ layout \ layout.phtml (48): Zend \ View \ Renderer \ PhpRenderer -> __ call ('url', Array) # 4 путь \ к \ app \ module \ Application \ view \ layout \ layout.phtml (48): Zend \ View \ Renderer \ PhpRenderer-> url ('own') в пути \ to \ app \ vendor \ zendframework \ zendframework \ library \ Zend \ Mvc \ Router \ Http \ TreeRouteStack.php в строке 313

Но если я удалю ссылку на навигационную панель (последний тег li) из навигации, она снова заработает. Даже если вместо this-> url ('own') я просто эхо "владел", он все равно работает.

Проблема в том, что только когда я повторяю this-> url ('own') в панели навигации, он перестает работать и выдает исключение. Он работает, если я использую маршрут по адресной строке или любым другим способом, например, эхом «принадлежит» на панели навигации.

Если у вас есть еще вопросы, задавайте мне их.


person khunshan    schedule 19.11.2013    source источник


Ответы (1)


Поскольку ваш маршрут называется ownGoods, не принадлежит

person Remi Thomas    schedule 19.11.2013
comment
теперь он работает. Но почему он работал раньше, когда я набирал goodsApp.localhost: 88 / own. И когда я повторяю в теге «принадлежит»? в то время как он просто не работал, когда я набирал echo this- ›url ('own'). Разница. Пожалуйста. - person khunshan; 19.11.2013
comment
принадлежит последний сегмент в вашем URL-маршруте. ownGoods - уникальный ключ к маршруту - person Remi Thomas; 20.11.2013