Я успешно создал свой маршрут, используя Regex.В моем маршруте есть несколько дополнительных параметров, которые я не хочу отображать в помощнике по URL, если только пользователь не указал их.Как мне это сделать?
Это то, что у меня сейчас есть
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/'
);
$router->addRoute('color_widgets', $route);
Затем я вызываю помощника по URL со следующим кодом
echo $this->url(array('page' => $page), 'color_widgets', false);
В результате получается / Синий-Виджеты / и не отправляет страницу по URL.Я могу исправить это, изменив реверс в Маршрутизаторе
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
'page' => 1
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/page/%d'
);
Однако это не решает мою проблему, скажем, у меня есть URL
/ Blue-Widgets / page / 1 / limit /10 Ограничение не отображается, снова я могу это исправить с помощью следующего
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
'page' => 1,
'limit' => 10
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/page/%d/limit/%d'
);
Проблема в том, что пользователь находится в / Blue-Widgets /, и я хочу перенести их на следующую страницуСиние виджеты со следующим кодом
echo $this->url(array('page' => $page), 'color_widgets', false);
Они фактически заносятся в / Blue-Widgets / page / 2 / limit / 10
Когда я действительно хочу перевести их в / Blue-Widgets /page / 2
Как я могу сделать это с Zend Framework.