在Laravel 5中,在哪里挂钩来改变视图输出


Where to hook in to alter View output in Laravel 5?

对于某种输出过滤器,我需要访问最终呈现的输出字符串,该字符串既包括视图数据,也包括视图文件中的'硬编码'文本。

例如:

welcome.blade.php

<div>This is bad and you are {{ $variable }}</div>

控制器、编写器或其他附加变量的东西

view()->with('variable', 'bad')

最终输出将是

<div>This is bad and you are bad</div>

但是现在让我们假设我们想用'good'替换每个'bad'实例,所以我们得到:

<div>This is good and you are good</div>

修改视图数据得到了很好的支持,但是如何将一些修改逻辑应用到完全呈现的内容中?(因为我认为这是唯一的方法来改变一个视图文件本身的内容?)

注意:如果且仅在可能的情况下,我更喜欢"挂钩"解决方案而不是"扩展核心"解决方案。

看一下CompilerEngine (Illuminate'View'Engines'CompilerEngine)。您可以使用它通过使用get方法来获取视图的求值内容。也许可以将其与已注册的ServiceProvider结合起来操作视图内容。还可以查看BladeCompiler,也许您可以将它们组合在一起。

但是试图改变硬编码文本似乎有点奇怪。为什么不直接使用变量呢?我的意思是,如果你想在之后更改它,为什么要硬编码呢?