如何在Symfony4中为一个或两个控制器添加中间件?

Ant*_*dev 3 php symfony symfony-flex

我想要一些具有如下方法的控制器:

public function syncAction(EntityManager $em)
{
    $posts = $em->getRepository('App:Posts')->findAllByOwner($this->getUser());

    return new JsonResponse(['ok' => true, 'posts' => $this->toJson($posts)]);
}
Run Code Online (Sandbox Code Playgroud)

我想添加像中间件这样的东西来自动 jsonify 来自该控制器的所有操作的响应。并且可以简单地做到这一点:

    return new JsonResponse(['ok' => true, 'posts' => $posts]);
Run Code Online (Sandbox Code Playgroud)

PS 还自动序列化我的实例。

Tho*_*aux 8

Symfony 没有中间件概念,只有event监听器和订阅者(​​基本上是同一件事)。

看看https://symfony.com/doc/current/event_dispatcher/before_after_filters.html

您将使用kernel.response( KernelEvents::RESPONSE) 事件来操纵控制器响应。