在Laravel 5.5 API中假设以下路由:
// custom routes for THIS user (the user making the request)
Route::get('/user', 'UserController@show');
Route::get('/user/edit', 'UserController@edit');
// register CRUDdy resource routes for users
Route::resource('users', 'UserController');
让我们以edit
为例:
public function edit(User $user)
{
...
}
如您所见,编辑路线包含类型提示的$user
参数。正如预期的那样,这适用于users/13/edit
路由。但是,我要配置路由/user/edit
以将$request->user()
用户对象传递给该函数。我不想在实际edit
方法中检查用户对象,因为这可能会影响其他验证(例如,我不想默认为当前用户如果有人传递了不存在的用户ID,我希望在这种情况下返回错误。)
简而言之:如何注册路由以首先创建参数,然后将其传递给给定的控制器方法?我的第一个想法是使用一个闭包:
Route::get('/user/edit', function(Request $request){
$user = $request->user();
});
但是一旦进入关闭状态,我不确定如何将请求转发到适当的控制器方法。
答案 0 :(得分:1)
您可以创建一个新的控制器方法来代替关闭,该方法使用当前用户调用edit。
让我们说你的路线是这样的:
Route::get('/user/edit', 'UserController@editSelf');
然后在你的控制器中:
public function editSelf(Request $request)
{
$this->edit($request->user());
}