刀片模板 - 动态切换自动逃生?

时间:2014-09-06 16:20:26

标签: php laravel blade

我有一个模板,它调用了许多内置宏,我从其他几个地方包含了这个模板。

有时,我需要像这样调用所有宏:

{{Form :: label('foo','Foo')}}

其他时候我需要像这样调用它们:

{{{Form :: label('foo','Foo')}}}

目前,我有两个单独的模板,除了额外的{}之外是相同的,这意味着每次我想要改变任何东西时我都要编辑两个文件。

有没有办法打开/关闭自动转义功能,以便我可以在两种情况下使用相同的文件?

由于

1 个答案:

答案 0 :(得分:1)

不,Laravel中没有允许你这样做的功能 - 另外,从代码维护/安全审计的角度来看,它可能是一个坏主意。几周后查看模板并且不知道哪些变量是否被逃脱将是疯狂的。

如果你需要这样做,“正确”的方式是extend Blade使用你自己的指令 - 类似@escapeIsConfigIsOn,然后把你的逻辑放在那里以逃避内容。顶级函数e是刀片在内部用于转义的函数。

#File: login/vendor/laravel/framework/src/Illuminate/Support/helpers.php
function e($value)
{
    return htmlentities($value, ENT_QUOTES, 'UTF-8', false);
}