我想知道如何将约束放在资源路由$ id上。例如,我想得到
user/{id}
确保id只是一个数字,而不是别的。 我用
注册了我的资源Route::resource('user','UserController');
答案 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')
您可以将所需参数设置为此自定义路线。