改变Laravel Blade Delimiter

时间:2013-06-28 10:58:18

标签: laravel laravel-4

我知道您可以使用

更改默认刀片分隔符
Blade::setEscapedContentTags('[[', ']]');
Blade::setContentTags('[[[', ']]]');

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

3 个答案:

答案 0 :(得分:14)

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

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

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

如果您想在应用程序布局中使用普通代码{{}},而在嵌套视图中使用自定义代码,则可能会出现问题 - 我不确定哪种方法最好接近会有。

答案 1 :(得分:1)

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

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

  

刀片和JavaScript框架

     

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

     

Hello, @{{ name }}.

     

在此示例中,@符号将被删除   刀;但是,{{ name }}表达式将保持不变   刀片引擎,允许它改为由JavaScript呈现   框架。

     

@verbatim指令

     

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

@verbatim
    <div class="container">
        Hello, {{ name }}.
    </div> 
@endverbatim

答案 2 :(得分:-1)

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