Я определил 2 пользовательских маршрута. Один для threads/:id/:name
, а другой для threads/tags/:tagName
, однако второй конфликт с первым, потому что, если я включаю оба первых первых разрыва и обрабатывает :id
буквально как действие, не подчиняясь требованию \d+
(я также пытался использовать чистые маршруты регулярных выражений, см. Нижнюю часть) ,Конфликты Zend Маршруты
Действие «1» не существует и не в ловушке __call()
Я попытался перестановка порядка маршрутов, но если я что то threads/tags/:tagName
оленьей кожи правильно захватить название тэга.
Я также попытался отключить маршруты по умолчанию, но маршруты по-прежнему не работают должным образом после этого.
Вот мой маршрут функция инициализации:
protected function _initRoutes() {
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/:id/:name',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
'id' => '\d+'
)
)
);
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/tags/:tagName',
array(
'controller' => 'threads',
'action' => 'tags',
),
array(
'tagName' => '[a-zA-Z]+'
)
)
);
}
Я также попытался использовать чистые регулярки маршрут, но был неудачным, скорее всего, потому что я сделал это неправильно:
$router->addRoute(
'threads',
new Zend_Controller_Router_Route_Regex(
'threads/(\d+)/([a-zA-Z]+)',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
1 => 'tagName',
2 => 'name'
)
)
);