Я настроил свои маршруты так, чтобы большинство классов вызывались в стандартном стиле controller/action
. Однако для моего внешнего интерфейса я не хочу, чтобы пользователи видели вызываемое действие, поэтому все интерфейсные страницы имеют свой собственный контроллер и используют действие индекса. Это мои маршрутизаторы в бутстрапе:Kohana 3.2 routing issue
Route::set('normal', '<controller>(/<action>(/<arguments>))',
array(
'arguments' => '.*'
))
->defaults(array(
'controller' => 'admin',
'action' => 'index',
));
Route::set('default', '(<controller>(/<arguments>))',
array(
'arguments' => '.*',
))
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
В настоящее время у меня есть три передних страницы, главная, about_us и сервисы. Все они отлично работают, если я не передаю какие-либо аргументы через URL-адрес, но проблема возникает, если я попытаюсь передать аргумент через URL-адрес в аргументы. В службах есть только action_index()
, чтобы отобразить страницу, и она проверяет любые аргументы и отображает результаты на основе аргумента. Однако, если я пытаюсь перейти к /services/1
пройти в 1 в качестве аргумента я получаю эту ошибку 404:
Kohana_HTTP_Exception [ 404 ]: The requested URL services/1 was not found on this server.
Он просто использует первый маршрут, нормальный. Как только он не сможет найти действие, он даже не пытается использовать второй маршрут, который будет работать. Если я поменяю порядок маршрутов, то он работает, но все мои другие классы, которые используют первый контроллер, перестают работать, так как все мои действия передаются в action_index()
в качестве аргументов.
Как я могу заставить это работать? Почему, когда первый маршрут не работает, Кохана не переходит на второй маршрут?
Попробуйте syntanx: 'Route :: набор ('нормальный', '(/ (/ (/ )))', и' Маршрут: : set ('default', '(/ (/ ))', ' –
DanR