Я успешно создал свой маршрут с использованием Regex. У меня есть несколько дополнительных параметров на моем маршруте, которые я не хочу показывать в помощнике URL, если пользователь не указал их. Как я могу это сделать?Zend_Controller_Router_Route_Regex Дополнительные параметры с обратным
Это то, что я в настоящее время
$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 Helper с помощью следующего кода
echo $this->url(array('page' => $page), 'color_widgets', false);
Это приводит к/Blue-Widgets/и не отправляет страницу в 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
/Сине-Widgets/страница/1/предел/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);
Они фактически были приняты к /Сине-Widgets/страница/2/предел/10
Когда я на самом деле хочу, чтобы взять их в /Сине-Widgets/страница/2
Как может Я выполняю это с помощью Zend Framework.
Спасибо, я старался не писать собственный маршрут. Я попробую использовать Router_Route. – user1287238