0

在我的 routes.global.php 中,我在路由中有这个。

    [
        'name' => 'test',
        'path' => '/test',
        'middleware' => [App\Action\Test1Action::class, App\Action\Test2Action::class],
        'allowed_methods' => ['GET'],
    ],

我有这个 return $next($request, new JsonResponse($data)); 在 Test1Action 类的末尾,因此它将数据发送到下一个操作。

但是在 Test1Action 里面有没有办法检查之后是否有另一个动作?

也许还有另一种方法,所以如果后面有一个,我可以执行上述返回,或者返回 json 响应仪式。

返回新的 JsonResponse($data);

这样我既可以单独使用 Test1Action 也可以在其他操作之前将其插入。

我尝试了几个选项,但没有奏效。任何帮助都会很棒。谢谢。

4

1 回答 1

1

也许您可以检查 $next 是否为空。但它可能总是被设置,我从未尝试过。但是在 Expressive 2 中,它始终是设置的,并且会更改为 Delegates。最后一个中间件也总是 NotFoundHandler。

由于您自己开发应用程序,因此您知道中间件和操作的顺序。我会让 Test1Action 中间件做这件事,将结果作为属性添加到 $request 中,然后让下一个中间件确定数据是否已设置。如果未设置数据,则跳过它并执行下一个中间件。它使它变得容易得多。

于 2017-03-10T06:13:54.533 回答