【发布时间】:2018-03-07 22:00:09
【问题描述】:
假设 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() 用户对象传递给函数。我不想检查用户对象 in 实际的edit 方法,因为这可能会干扰其他验证(例如,如果有人通过,我不想默认为当前用户一个不存在的用户 ID,我想在这种情况下返回一个错误)。
简而言之:如何注册路由以首先创建参数,然后将其传递给给定的控制器方法?我的第一个想法是使用闭包:
Route::get('/user/edit', function(Request $request){
$user = $request->user();
});
但是一旦进入闭包,我不确定如何将请求转发到适当的控制器方法。
【问题讨论】:
-
你确定这个函数是由工匠生成的,比如使用
--resource标签 -
是的,资源路线是由工匠生成的。我想添加其他路线,就像我在问题中所说的那样。