我已经设置了我的路由,以便以标准controller/action
样式调用大多数类。但是对于我的前端,我不希望用户看到被调用的动作,因此所有前端页面都有自己的控制器并使用索引操作。这些是我在bootstrap中的路由器:
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',
));
我目前有三个前端页面,home,about_us和services。如果我不通过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()
。
我怎样才能使这个工作?为什么当第一条路线不起作用时,Kohana不会继续第二条路线?
答案 0 :(得分:-1)
您不需要为每条路线创建控制器。您可以创建自定义路由(路径名称)并指定控制器和操作名称。阅读文档以获得进一步说明。 Routing
对于论据,试试这个:
Route::set('default', '(<controller>(/<arguments>))',
->defaults(array(
'controller' => 'home',
'action' => 'index',
));