Laravel 4资源路由

时间:2013-06-03 00:32:17

标签: laravel laravel-4

我想知道如何将约束放在资源路由$ id上。例如,我想得到

user/{id}

确保id只是一个数字,而不是别的。 我用

注册了我的资源
Route::resource('user','UserController');

2 个答案:

答案 0 :(得分:4)

您可以使用路线参数作为解释in the documentation。 (相当详细)解决方案将是:

Route::get('user',           array('uses' => 'UserController@index'));
Route::get('user/create',    array('uses' => 'UserController@create'));
Route::post('user',          array('uses' => 'UserController@store'));
Route::get('user/{id}',      array('uses' => 'UserController@show'))->where('id', '[0-9]+');
Route::get('user/{id}/edit', array('uses' => 'UserController@edit'))->where('id', '[0-9]+');
Route::put('user/{id}',      array('uses' => 'UserController@update'))->where('id', '[0-9]+');
Route::delete('user/{id}',   array('uses' => 'UserController@destroy'))->where('id', '[0-9]+');

不幸的是,这将抛出500(NotFoundHttpException)而不是404,但它可以保护您免受安全性或数据库不一致问题。

答案 1 :(得分:0)

抱歉延误。我刚看到你的问题。

如果您使用Laravel 4.1,您可以使用Route :: resource方法,如下所示:

Route::resource('user', 'UserController', array('only' => array('create', 'store', 'update', 'destroy')));

然后,您可以使用Route :: get()方法添加另一个操作,如下所示:

Route::get('customaction/{id}', 'UserController@customAction')

您可以将所需参数设置为此自定义路线。