Routing KohanaPHP 3路由问题

Routing KohanaPHP 3路由问题,routing,kohana,Routing,Kohana,我有一个用户控制器的路由。此控制器大约有20种方法,因此我不想在路由中手动设置它们: Route::set('user', 'user/<action>') ->defaults(array( 'controller' => 'user', 'action' => 'index', )); Route::set('user','user/')) ->默认值(数组)( “控制器”

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

Route::set('user', 'user/<action>')
        ->defaults(array(
            'controller' => 'user',
            'action'     => 'index',
        ));
Route::set('user','user/'))
->默认值(数组)(
“控制器”=>“用户”,
“操作”=>“索引”,
));
我还有一个图片控制器(controller\u User\u pictures),它有多种用于管理用户图片的方法。创建管线时:

Route::set('pictures', 'user/pictures/<action>')
        ->defaults(array(
            'directory'  => 'user',
            'controller' => 'user_pictures',
            'action'     => 'index',
        ));
Route::set('pictures','user/pictures/'))
->默认值(数组)(
'目录'=>'用户',
“控制器”=>“用户图片”,
“操作”=>“索引”,
));
它不起作用了

即使我创建了一个单独的控制器(控制器_图片)并创建了路由,它也不起作用:

Route::set('pictures', 'user/pictures/<action>')
        ->defaults(array(
            'directory'  => 'user',
            'controller' => 'pictures',
            'action'     => 'index',
        ));
Route::set('pictures','user/pictures/'))
->默认值(数组)(
'目录'=>'用户',
“控制器”=>“图片”,
“操作”=>“索引”,
));
在所有情况下,它都返回错误:
方法操作\u图片不存在
,这意味着路由器正在用户控制器中查找名为图片的操作,这当然是错误的

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

编辑
第二个问题,你知道如何在任何操作中(当然是在路由中)用连字符替换下划线吗?

路由的顺序很重要;具体路线应该放在第一位

因此,您的url
user/pictures/
正在触发第一条路由。如果您将图片路由置于普通用户路由之上,它应该可以正常工作


另一方面注意:如果您指定目录“user”,您的控制器将是
classes/controller/user/Pictures.php中的
controller\u user\u Pictures
,是的,您是对的。这就是我的想法,但是有一个小错误让我想错了。当我没有在URL中提供任何操作(仅用户/图片)时,它不起作用(显示问题中的错误),如果我提供索引或任何其他操作,它就起作用。你知道为什么吗?另外,扩展了我的问题,如果你能看一看,它会很高兴。url
user/pictures
不起作用,因为路由中的操作不是可选的。需要在路由中稍作更改:
'user/pictures(/)”
这样,路由中的动作部分(及其前面)是可选的。至于下划线/连字符;我不确定。我没有看到一个合适的解决方案,我自己也没有找到。下划线在Kohana中转换为目录分隔符。所以最好不要(ab)使用那么多。