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

问题描述 投票:0回答:6

在laravel框架中我们可以使用blade在html文件中添加PHP代码。
我们在 Laravel 的 Blade 文件中同时使用

{{ }}
{!! !!}
语法。
他们有什么区别?

php laravel laravel-5 laravel-blade
6个回答
124
投票

Blade {{ }}语句通过PHP的htmlentities函数自动发送,防止XSS攻击。

如果您将数据从控制器传递到具有某些 HTML 样式的视图,例如:

$first = "<b>Narendra Sisodia</b>";

在 Blade 中使用

{{ $first }}
访问它,那么输出将是:

<b>Narendra Sisodia</b>

但是如果使用

{!! $first !!}
访问它,那么输出将是:

纳伦德拉·西索迪亚


14
投票

如果您不想转义数据,请使用

{!! !!}
,否则使用
{{ }}


8
投票

逃避数据使用

{{ $data }}

如果您不想转义数据,请使用以下

{!! $data !!}

7
投票

来自文档:https://laravel.com/docs/5.1/blade

默认情况下,Blade

{{ }}
语句会通过 PHP 的 htmlentities 函数自动发送,以防止 XSS 攻击。如果您不希望数据被转义,您可以使用以下语法:

Hello, {!! $name !!}.

3
投票

Blade {{ }}语句通过PHP的htmlentities函数自动发送,防止XSS攻击。

您可以在这里查看更多内容:https://laravel.com/docs/master/blade


0
投票

在 Laravel 中

{{ }}
应以纯文本形式传递数据并进行 HTML 转义,而
{!! !!}
按原样内容传递数据,不进行任何 HTML 转义。

例如:我有一个

$status = '<b>Active Status</b>';
变量,它将 HTML 内容存储为数据。

现在,如果我将此数据写为

{{ $status }}
那么它将作为
plain text
返回。

预期输出是:

<b>Active Status</b>

但是如果我将此数据写为

{!! $status !!}
那么它将作为
HTML
代码返回。

预期输出是:

𝗔𝗰𝘁𝗶𝘃𝗲 𝗦𝘁𝗮𝘁𝘂𝘀
© www.soinside.com 2019 - 2024. All rights reserved.