我想知道如何对资源路由 $id 施加约束。例如我想得到
user/{id}
确保 id 只是一个数字,没有别的。我已经注册了我的资源
Route::resource('user','UserController');
您可以按照文档中的说明使用路由参数。(相当冗长的)解决方案将是:
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,但它可以保护您免受安全或数据库不一致问题的影响。
抱歉耽搁了。我刚看到你的问题。
如果您使用 Laravel 4.1,您可以使用 Route::resource 方法,如下所示:
Route::resource('user', 'UserController', array('only' => array('create', 'store', 'update', 'destroy')));
然后,您可以使用 Route::get() 方法添加另一个操作,如下所示:
Route::get('customaction/{id}', 'UserController@customAction')
您可以为此自定义路由设置所需的参数。