9

我知道您可以使用更改默认刀片分隔符

Blade::setEscapedContentTags('[[', ']]');
Blade::setContentTags('[[[', ']]]');

但是我不知道我应该把它放在哪里,这样它只会影响单个刀片模板,而不是把它放在app/start/global.php影响整个应用程序的地方。

4

3 回答 3

14

如果您只想为单个视图使用不同的标签,您可以在将生成视图的闭包或控制器操作中设置标签。

Route::get('/', function()
{
    Blade::setEscapedContentTags('[[', ']]');
    Blade::setContentTags('[[[', ']]]');

    return View::make('home');
});

如果您想在应用程序布局中使用普通标签但在嵌套视图中使用自定义标签,这可能是一个问题{{-}}我不确定最好的方法是什么。

于 2013-06-28T11:51:43.287 回答
3

带有Blade::setEscapedContentTags/的解决方案Blade::setContentTags在最新版本的 Laravel 中不起作用(在 5.6 中检查)。

推荐的方法是(https://laravel.com/docs/5.6/blade#blade-and-javascript-frameworks):

Blade 和 JavaScript 框架

由于许多 JavaScript 框架还使用“大括号”来指示应在浏览器中显示给定表达式,因此您可以使用该@ 符号来通知 Blade 渲染引擎一个表达式应该保持不变。例如:

Hello, @{{ name }}.

在本例中,该@符号将被 Blade 删除;但是,{{ name }}Blade 引擎不会改变表达式,而是允许它由您的 JavaScript 框架呈现。

@verbatim 指令

如果您在模板的大部分中显示 JavaScript 变量,您可以将 HTML 包装在 @verbatim指令中,这样您就不必在每个 Blade 回显语句前面加上一个@符号:

@verbatim
    <div class="container">
        Hello, {{ name }}.
    </div> 
@endverbatim
于 2018-07-20T05:28:20.600 回答
0

只需使用@verbatim指令。将整个代码包装在其中,刀片将忽略所有花括号。

于 2018-12-17T12:16:58.913 回答