我有以下控制器:
class Foo extends Controller
{
public function __construct ()
{
$this->middleware('bar', ['only' => ['store', 'update']]);
}
public function store ()
{
// some code to result $baz object (a model or null)
// pass $baz to Bar middleware for further use
}
}
以及应在控制器代码之后执行的以下中间件:
class Bar
{
public function handle($request, Closure $next)
{
$response = $next($request);
// I need to use $baz here
return $response;
}
}
但是,我可以使用 $request->request->add(['baz'=>123]) 将数据从普通中间件传递到控制器,但这不适用于 'after' 中间件。我认为原因是 $request 不是在构造函数/句柄函数中通过引用传递来更新以供进一步使用,仅用于消费。我也尝试过 Session::put() 和 Session::pull(),但由于我不清楚的原因,它不起作用(随时返回 null)。在 Foo.store() 方法中返回 $baz 认为 Bar.handle() 方法将接收它作为返回的结果,将不起作用(返回一个 Illuminate\Http\RedirectResponse 对象)。我搜索了很多,但谷歌只返回正常(之前)中间件案例。如何以优雅的方式通过 -after- execution 将数据从 Controller 传递到中间件?为了这个问题,我更喜欢(如果可能的话)中间件方法,而不是中间件的替代品。谢谢!