KohanaPHP 3路由问题

时间:2011-03-16 10:33:59

标签: routing kohana

我有一个用户控制器的路由。这个控制器有大约20种方法,所以我不想在路线中手动设置它们:

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

我还有图片控制器(Controller_User_Pictures),有多种方法用于管理用户图片。当我创建路线时:

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

它不起作用。

即使我创建了一个单独的控制器(Controller_Pictures)并创建了路由,它也无法正常工作:

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

在所有情况下都会返回错误:Method action_pictures does not exist这意味着路由器正在寻找用户控制器中名为图片的操作,这当然是错误的。

我想到的唯一解决方案是在bootstrap.php文件中定义所有路由。你有更好的解决方案吗?

修改 第二个问题,有任何想法如何在任何操作中使用连字符替换下划线(当然在路由中)?

1 个答案:

答案 0 :(得分:1)

路线的顺序很重要;具体路线应该是第一位的。

所以你的网址user/pictures/<action>正在触发第一条路线。如果你将图片路由放在一般用户路由之上,它应该可以正常工作。

另一个注意事项:如果您指定目录'user',则Controller_User_Pictures

中的控制器将为classes/controller/user/pictures.php