我有一个用户控制器的路由。这个控制器有大约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文件中定义所有路由。你有更好的解决方案吗?
修改 第二个问题,有任何想法如何在任何操作中使用连字符替换下划线(当然在路由中)?
答案 0 :(得分:1)
路线的顺序很重要;具体路线应该是第一位的。
所以你的网址user/pictures/<action>
正在触发第一条路线。如果你将图片路由放在一般用户路由之上,它应该可以正常工作。
另一个注意事项:如果您指定目录'user',则Controller_User_Pictures
classes/controller/user/pictures.php