0

我有以下控制器:

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 传递到中间件?为了这个问题,我更喜欢(如果可能的话)中间件方法,而不是中间件的替代品。谢谢!

4

0 回答 0