我使用 Larvel 4.1
如果我为每个动作使用路线,我可以像这里一样检查路线中的参数值
Route::get('user/{id}', 'UserController@showProfile')->where('id', '[0-9]+');
但是,当我为RESTful控制器定义路由时,我不明白如何检查此值
Route::controller('users', 'UserController');
我是否直接将参数检查到控制器的操作中,还是有另一种方式?
答案 0 :(得分:0)
是的,看起来这不是Route :: controller()的工作方式,但如果你这样做
Route::pattern('one', '[0-9]+');
它会起作用。因为这是Laravel创建控制器路由参数的方式:
GET|HEAD myactions/id/{one?}/{two?}/{three?}/{four?}/{five?}
问题在于您无法以这种方式过滤这些参数,因为它们可能出现在不同控制器的操作中。因此,您可能需要手动创建其中一些路径:
Route::get('user/{id}', 'UserController@showProfile')->where('id', '[0-9]+');
在我看来,这比使用通用的Route :: controller()或Route :: resource()更好。在Phil Sturgeon看来,正如你在他的文章中所看到的那样:http://philsturgeon.uk/blog/2013/07/beware-the-route-to-evil
答案 1 :(得分:0)
所以,我实际上以这种方式为每个动作使用分开的路线
Route::pattern('one', '[0-9]+');
Route::get('user/{id}', 'UserController@showProfile');
我很希望能以更短的方式做到这一点。