问题 如何在Symfony2中压缩html输出?


我知道Twig有一个{%spaceless%}过滤器,但它只删除了html标签之间的空格。

我需要为网站中的每个页面返回一行html。我有一个可以处理的正则表达式,但我不知道在sf2中哪里使用它,因为一切都是自动发生的。

我想我必须注册一个新的模板引擎,或添加一个枝条扩展,但我找不到有关该主题的足够文档,所以我卡住了

有任何想法吗?


2418
2017-07-12 18:22


起源



答案:


要在所有视图输出上运行正则表达式,您可以挂钩 kernel.response 由Symfony2框架调度的事件。

从节上 kernel.response

此事件的目的是允许其他系统修改或   在创建后替换Response对象:

public function onKernelResponse(FilterResponseEvent $event)
{
    $response = $event->getResponse();

    // ... modify the response object
}

我建议你阅读 内幕 章节更详细。


10
2017-07-12 20:18



是,我确定。我不认为无空间过滤器是这样做的,所以我不能将它报告为bug。它只删除html标记之间的空格。 - HappyDeveloper
有时它甚至没有这样做,我在我的代码中看到很多换行符,在html标签之间,所以我只想像往常一样运行我自己的正则表达式,但我不知道如何在这个框架中做到这一点。 - HappyDeveloper
更新的答案。 - Stephen Watkins
答案是'内部'部分,谢谢。我的单行html输出现在= p - HappyDeveloper
我会说无空间不是一个好的解决方案。例如,<i class =“fa fa-lg fa-fw fa-home”> </ i> <span class =“menu-item-parent”>仪表板</ span>与<i class =不同“fa fa-lg fa-fw fa-home”> </ i> <span class =“menu-item-parent”>仪表板</ span>(关闭i后请注意间隙)。 - Denis V


答案:


要在所有视图输出上运行正则表达式,您可以挂钩 kernel.response 由Symfony2框架调度的事件。

从节上 kernel.response

此事件的目的是允许其他系统修改或   在创建后替换Response对象:

public function onKernelResponse(FilterResponseEvent $event)
{
    $response = $event->getResponse();

    // ... modify the response object
}

我建议你阅读 内幕 章节更详细。


10
2017-07-12 20:18



是,我确定。我不认为无空间过滤器是这样做的,所以我不能将它报告为bug。它只删除html标记之间的空格。 - HappyDeveloper
有时它甚至没有这样做,我在我的代码中看到很多换行符,在html标签之间,所以我只想像往常一样运行我自己的正则表达式,但我不知道如何在这个框架中做到这一点。 - HappyDeveloper
更新的答案。 - Stephen Watkins
答案是'内部'部分,谢谢。我的单行html输出现在= p - HappyDeveloper
我会说无空间不是一个好的解决方案。例如,<i class =“fa fa-lg fa-fw fa-home”> </ i> <span class =“menu-item-parent”>仪表板</ span>与<i class =不同“fa fa-lg fa-fw fa-home”> </ i> <span class =“menu-item-parent”>仪表板</ span>(关闭i后请注意间隙)。 - Denis V