【发布时间】:2014-10-01 21:07:06
【问题描述】:
我已经设置了路由,以便大多数类都以标准controller/action 样式调用。但是对于我的前端,我不希望用户看到正在调用的操作,因此所有前端页面都有自己的控制器并使用索引操作。这些是我在引导程序中的路由器:
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()。
我怎样才能让它工作?为什么当第一条路线行不通时,小花不去第二条路线?
【问题讨论】:
-
试试这个语法:
Route::set('normal', '(/<controller>(/<action>(/<arguments>)))',和Route::set('default', '(/<controller>(/<arguments>))',
标签: url-routing kohana kohana-3.2