zend表达 - 中间件检查是否有下一个可用?

时间:2017-03-08 17:59:35

标签: zend-expressive

在我的routes.global.php中,我在路线中找到了这个。

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

我已经返回$ next($ request,new JsonResponse($ data));在Test1Action类的末尾,所以它会将数据发送到下一个动作。

但在Test1Action中是否有办法检查之后是否还有其他行动?

也许有另一种方式,所以我可以做以上的回报,如果有一个之后或返回json响应仪式。

返回新的JsonResponse($ data);

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

我尝试了一些选项,但没有成功。任何帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:1)

也许你可以检查$ next是否为null。但它可能总是设定,我从未尝试过。然而,在表达式2中,它总是被设置并且它更改为代表。最后的中间件也将是NotFoundHandler。

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