如何检查RESTful控制器动作的参数值

时间:2014-09-11 16:40:47

标签: laravel

我使用 Larvel 4.1

如果我为每个动作使用路线,我可以像这里一样检查路线中的参数值

Route::get('user/{id}', 'UserController@showProfile')->where('id', '[0-9]+');

但是,当我为RESTful控制器定义路由时,我不明白如何检查此值

Route::controller('users', 'UserController');

我是否直接将参数检查到控制器的操作中,还是有另一种方式?

2 个答案:

答案 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');

我很希望能以更短的方式做到这一点。