在 Laravel 集体中使用双花括号

Using double curly brace in Laravel Collective

我正在尝试创建像这样创建用户的表单,此表单将用于显示数据,也使用表单模型绑定:

{{ Form::open(['url' => 'admin/users/create']) }}

    <div class="form-group">
        {{ Form::label('first_name', 'First Name : ') }}
        {{ Form::text('first_name', null, ['class' => 'form-control']) }}
    </div>

    <div class="form-group">
        {{ Form::label('last_name', 'Last Name : ') }}
        {{ Form::text('last_name', null, ['class' => 'form-control']) }}
    </div>

{{ Form::close() }}

但是它显示的代码不是实际视图,所以我在浏览器中看到了这段代码:

<form method="POST" action="http://localhost:8000/admin/users/create" accept-charset="UTF-8">

    <input name="_token" type="hidden" value="X5MA46MJctYOYeMtZF1RoQKYmWDtAbsSoxwoOA8Y">

    <label for="first_name">First Name : </label> 
    <input class="form-control" name="first_name" type="text" id="first_name">

    <label for="last_name">Last Name : </label> 
    <input class="form-control" name="last_name" type="text" id="last_name">

</form>

但是当尝试使用 {!! !!} 作为左括号和右括号时,代码有效并显示实际视图。

我仍然不明白为什么我不能使用 {{ }} 作为我的括号使用 laravel-collective and if you see this Project 它工作正常。

也有点害怕 XSS 攻击,就像 laravel documentation 显示未转义数据 部分所说:

Note: Be very careful when echoing content that is supplied by users of your application. Always use the double curly brace syntax to escape any HTML entities in the content.

对此有什么有用的解释吗?谢谢

注意:我使用的是 Laravel 版本 5.1.40 (LTS)

因为 {{ }} 用于转义 HTML 实体,以防止 XSS 攻击您的输入显示在您的 server/database 中。

因此,如果有人在您的数据库中插入了恶意代码,那么用户将无法执行该代码,而只会在屏幕上打印出来。像这样

$dbValue = "<script> Some evil code </script>";

{{ $dbValue }}

它会这样输出

<script> Some evil code </script>

并且因为 Laravel 集体 HTML 表格正在生成 HTML 供您显示,所以您必须使用 {!! !!} 以防止转义。

{!! "<b>Bold Text</b>" !!}

然后它会输出这个

粗体字

生成 HTML 没问题,但您必须小心将您的值发送到您的服务器并显示给用户。在那里你总是需要使用 {{ }}

来转义你的数据