1

我想知道如何对资源路由 $id 施加约束。例如我想得到

user/{id}

确保 id 只是一个数字,没有别的。我已经注册了我的资源

Route::resource('user','UserController');
4

2 回答 2

4

您可以按照文档中的说明使用路由参数。(相当冗长的)解决方案将是:

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,但它可以保护您免受安全或数据库不一致问题的影响。

于 2013-06-03T08:34:31.483 回答
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')

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

于 2014-04-27T21:14:26.187 回答