Kohana:忽略url的行动

时间:2013-04-20 20:26:52

标签: php routing kohana

有什么方法可以默认路由使用action_index而不必在网址中指定它?

即。

Route::set('user_profile','(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'directory' => 'public',
        'controller' => 'user',
        'action'     => 'index',
    ));

要使用它,我需要指定/users/index/1234

但我想使用/users/1234

我尝试从Route :: set()中取出动作,但最终得到了404页。

更新

现在我已经添加了这条路线(最上面的路线),我的默认路线现在似乎不起作用

Route::set('user_profile','(<controller>(/<id>))')
->defaults(array(
    'directory' => 'public',
    'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
    'action'     => 'index',
));

Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'directory' => 'public',
        'controller' => 'home',
        'action'     => 'index',
    ));

1 个答案:

答案 0 :(得分:2)

就像从URL中省略<action> param一样简单,但仍保留默认值:

Route::set('user_profile','(<controller>(/<id>))')
    ->defaults(array(
        'directory' => 'public',
        'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
        'action'     => 'index',
    ));

请注意,除非您有其他路由覆盖此行为,否则您的user控制器将只能执行index操作。


修改

如果您的users_profile路线只处理/users路径,那么您可以明确地在路线中设置它:

Route::set('user_profile','users(/<id>)')
    ->defaults(array(
        'directory' => 'public',
        'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
        'action'     => 'index',
    ));

这应解决相互冲突的路线。