有没有办法修改 Symfony 内核 event_listener 中的请求正文

rod*_*obb 1 xml event-listener symfony

我的应用程序在请求正文中接收 XML,但在控制器操作之前需要对 XML 结构进行一些更改。

我做了一个内核事件监听器

class TransformRequestPListener {
  public function onKernelController(FilterControllerEvent $event)
  {
  [...]
  }
}
Run Code Online (Sandbox Code Playgroud)

在service.yml中声明

class: .\Listener\TransformListener
arguments: [...]
tags:
  - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 我可以修改请求正文(收到的 XML)吗?
  • 如何?

提前致谢

更新 覆盖 Bundle 类是我正在探索的一种新方法。也许我可以使用此处所述的编译器通行证做一些事情,但我从未做过类似的事情。有人能帮我吗?

rod*_*obb 6

最后我设法修改内容......或类似的东西。

使用内核事件侦听器,我恢复了请求,进行了所需的转换,然后重新初始化了请求。我必须检查它不会干扰其他任何事情。这是代码:

$transformedContent = custom_transform($request->getContent());

$request->initialize(
   $request->query->all(),
   $request->request->all(),
   $request->attributes->all(),
   $request->cookies->all(),
   $request->files->all(),
   $request->server->all(),
   $transformedContent
);
Run Code Online (Sandbox Code Playgroud)