Laravel 如何在不更改任何模板的情况下过滤所有细枝输出?

Laravel 如何在不更改任何模板的情况下过滤所有细枝输出?,laravel,twig,Laravel,Twig,在Laravel中,我想全局过滤所有细枝模板的所有输出,而不更改任何模板。目前的情况是,我希望将应用程序生成的所有html中的所有http://和https://转换为协议相关/ 有没有人知道如何做到这一点 我所能想到的最快和最肮脏的方法是在twig呈现html的时候。只要做一个regexp 我一直盯着看,但我不确定我的答案是否真的在里面。我还试着追踪| raw过滤器是如何工作的,因为我发现有一个| raw实际抑制的转换正在发生,这是(如果准确的话)我想要做的事情的大致情况。到了一定程度,我决定

在Laravel中,我想全局过滤所有细枝模板的所有输出,而不更改任何模板。目前的情况是,我希望将应用程序生成的所有html中的所有http://和https://转换为协议相关/

有没有人知道如何做到这一点

我所能想到的最快和最肮脏的方法是在twig呈现html的时候。只要做一个regexp

我一直盯着看,但我不确定我的答案是否真的在里面。我还试着追踪| raw过滤器是如何工作的,因为我发现有一个| raw实际抑制的转换正在发生,这是(如果准确的话)我想要做的事情的大致情况。到了一定程度,我决定去问问别人


谢谢,Twig真的不是进行这种转换的地方,因为它将应用于应用程序发送的所有输出。我建议您研究一下Laravel提供的。您应该能够捕获内核的响应事件,然后在侦听器中过滤输出。我在Symfony中也做了同样的事情来实现类似的功能


如果您的路径是由细枝过滤器生成或通过细枝过滤器生成的,您可以考虑为您的用例扩展这些特定过滤器,但是,这对我来说似乎非常脆弱,因为如果有人在模板中硬编码了路径而不是使用变量,会发生什么情况?

将您的过滤器添加到web/app.php。那肯定会得到一切。一种更为传统的方法是创建一个kernel.response监听器。您想在什么框架下实现它?你放了两个框架标签,但在你的问题中没有提到任何一个。你是对的。谢谢你,Marcin。答案是Laravel,问题已编辑。目前,我已将一个黑客硬编码到bundles/twigview/view.php中,以便在打印到页面之前对呈现的html运行preg_替换。最好把它放在扩展之类的地方,而不是放在库中。但我确实找到了办法。