Я попытался понять схему маршрутизации ZF2, но у меня есть проблема. Я хотел бы перечислить продукты по периодам и создать ссылку для каждого из периодов (сегодня, на этой неделе, в этом месяце, все). Например:Zend Framework 2 Ошибка сегмента маршрутизации
<a href="<?php echo $this->url('Application', array('action' => 'index', 'period' => 'this-week')); ?>">This week</a>
выход: локальный/приложение/это неделю/
При нажатии на эту ссылку, появляется сообщение об ошибке:
A 404 error occurred
Page not found.
The requested controller was unable to dispatch the request.
это мой module.config:
.....................
'router' => array(
'routes' => array(
'Application' => array(
'type' => 'Segment',
'options' => array(
'route' => '/application/[:action/][:period/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'period' => '(today|this-week|this-month|all)'
),
'defaults' => array(
'controller' => 'Application\Controller\ApplicationController',
'action' => 'index',
'period' => 'all'
),
),
),
),
), ...........................
Где я делаю неправильно? Я пытался изменить:
'period' => '(today|this-week|this-month|all)'
в
'period' => '[a-zA-Z][a-zA-Z0-9_-]*'
, но он не работает снова.
внутри моего контроллера, индекс действие пусто на самом деле:
public function indexAction(){
}
index.phtml содержит только эхо ссылки:
<a href="<?php echo $this->url('Application', array('action' => 'index', 'period' => 'this-week')); ?>">This week</a>
правку
Я решил используя строку запроса для моего использования. Это более простой в реализации, это не элегантно, но moooore просто: D ... Я думал, что вот так, с переключателем для «более высокой жесткости»: функция
public function indexAction(){
...getQuery method ...
switch($period){
case'today':
.......
break;
case'this-week':
.......
break;
case'this-month':
.......
break;
default:
// if query string is null or contains other characters, sets default case "all"
...
break;
}
}
URL:
<a href="<?php echo $this->url('Application', array('action' => 'index'), array('query' => array('period' => 'this-week'); ?>">This week</a>
выход:
localhost/adopted/?period=this-week
внутри module.config:
.....................
'router' => array(
'routes' => array(
'Application' => array(
'type' => 'Segment',
'options' => array(
'route' => '/application/[:action/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Application\Controller\ApplicationController',
'action' => 'index',
),
),
),
),
), ...........................
ли работа, если вы удалите значение по умолчанию для действий с вашей конфигурации маршрутизации? –
Если я удаляю значение действия по умолчанию, оно работает! но URL-адрес: localhost/application/index/this-week/ –