在Laravel Blade文件中,{{ }}和{{{ }}}有什么区别?

5
在laravel框架中,我们可以使用blade在html文件中添加PHP代码。 在Laravel的blade文件中,我们使用{{ }}和{{{ }}} 语法。 它们之间有什么区别吗?
我有一个像这样的blade文件代码:
{{{ $errors->has('slider') ? 'has-error' : '' }}}
5个回答

15

在 Laravel 5 之前:

  • {{{ $var }}} 对 $var 的内容进行转义
  • {{ $var }} 输出未经转义的 $var 内容

自 Laravel 5 开始:

  • {{ $var }}{{{ $var }}} 都对 $var 的内容进行转义
  • {!! $var !!} 输出未经转义的 $var 内容

9
在Laravel 5中,{{ }}{{{ }}}没有任何区别。
在版本4中,它包括以下两种样式:“{{”和“{{{”。双花括号是原始输出,而三个花括号是转义输出。
目前在5.0中,双花括号和三个花括号都是转义输出变量,而新的“{!! $var !!}”用于原始输出。
参考链接:https://laravel-news.com/2014/09/laravel-5-0-blade-changes/

4

{{{可以显示HTML数据,而{{则可以显示数据和元素但不进行渲染。

例如:

$str = "<h3>Hello world!</h3>";

{{ $str }}输出:<h3>Hello world!</h3>

{{{ $str }}}输出:

Hello world!


2
Laravel 4 中,{{{ $var }}} 被用来呈现数据并转义 HTML 实体,使用 PHP 的 htmlentities 函数以防止 XSS 攻击。 {{ $var }} 被用来呈现未转义的数据。
Laravel 5 中略有不同,你可以使用 {{ $var }}{{{ $var }}} 来转义数据,并且你可以使用 {!! $var !!} 来呈现未转义的数据。

0

这里没有提到的一件事情,但它可能很方便。如果您有一个带有参数的翻译文本,该参数应成为生成的HTML中的Vue变量,则三个大括号会派上用场。

E.g.:

{{{ __('This window will close in :timeout seconds', ['timeout' => '@{{timeoutSecs}}']) }}}

尝试使用其他花括号的组合将会抛出一些错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接