Symfony 如何将内容注入到细枝生成的内容?
我想在解析和完成所有其他内容后,将内容注入到细枝生成的内容中 现在我正在使用下面的代码:Symfony 如何将内容注入到细枝生成的内容?,symfony,twig,Symfony,Twig,我想在解析和完成所有其他内容后,将内容注入到细枝生成的内容中 现在我正在使用下面的代码: public function onResponse(KernelEvent $event) { // TODO: find a better way to inject $event->getResponse()->setContent( $this->asseticProcessor->inject($event->getResponse()
public function onResponse(KernelEvent $event)
{
// TODO: find a better way to inject
$event->getResponse()->setContent(
$this->asseticProcessor->inject($event->getResponse()->getContent()));
}
public static function getSubscribedEvents()
{
return array(
KernelEvents::RESPONSE => array('onResponse', -9999),
);
}
然而,我觉得这可能不是最好的方法。首先,至少我只想在Twig HTML模板实际呈现的情况下进行注入。在某些情况下,控制器可以简单地返回响应而不呈现任何内容,或者他们可以呈现json,在这种情况下,我不必在这里晚些时候操纵内容,但是您可以使用内核事件侦听器来实现这一点。例如:
services:
response_modifier:
class: Some\Bundle\Listener\ModifyResponseListener
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse, priority: -127 }
将优先级设置得很低,以便它向响应链的最前端激发。侦听器可能会这样工作:
class ModifyResponseListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
// We probably want to ignore sub-requests
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
return;
}
$content = $response->getContent();
$content = preg_replace('/foo/is', 'bar', $content);
$response->setContent($content);
}
}
以上内容将在最终输出中将所有出现的foo替换为bar
请注意,在修改内容之前,您可能还必须检查响应是否不是重定向、ajax、流或其他内容 请在你的问题中再补充一些细节好吗?你到底想达到什么目的?向twig注入内容是什么意思?嗨,nifr,我需要通过各种twig函数、过滤器等在所有解析之后修改请求响应的最终内容。因此,我需要捕获最后的响应字符串,并在返回响应对象之前对其进行修改。