Laravel 5 Form::model(...) 默认转义?

Laravel 5 Form::model(...) escaped by default?

也许这是我遗漏的一个简单的事情,但在我的 laravel blade 模板中我有类似的东西:

{{ Form::model(....) }}
    ... my fields ...
{{ Form::close() }}

这会导致转义 HTML,因此表单标签实际上会打印到屏幕上。但是,如果我这样做:

{!! Form::model(....) !!}
    ... my fields ...
{!! Form::close() !!}

它按预期工作。输出html时是否总是需要使用{!! ... !!}?我读过的所有教程都只展示了使用 {{ Form::model(...) }} 的常规约定打开表单。感谢您的任何建议!使用 Laravel 5 fwiw.

以前是{{ text }}不转义,{{{ text }}}转义,后来改成了Laravel 5。现在,转义为 {{ text }},未转义为 {!! text !!}。所以是的,对于 Laravel 5.

中的 HTML,您总是需要后者

很可能,您阅读的所有教程都使用旧版本。我将是第一个承认这可能有点令人困惑的人。我自己还没有完全习惯。 :)

供参考: http://laravel.com/docs/5.0/templates - Laravel 5 http://laravel.com/docs/4.2/templates - Laravel 4

没错。

Laravel 4

{{ ... }} 原始 html
{{{ ... }}}htmlentities()

转义

Laravel 5

{!! ... !!} 原始 html
{{{ ... }}} 用于明确转义的内容
{{ ... }} 默认行为(也被转义)


如果您不喜欢它,您可以使用以下方法更改所有 3 个标签:

Blade::setRawTags($openTag, $closeTag);
Blade::setContentTags($openTag, $closeTag);
Blade::setEscapedContentTags($openTag, $closeTag);

要恢复 Laravel 4 处理事情的方式,您可以这样做:

Blade::setRawTags('{{', '}}');
Blade::setEscapedContentTags('{{{', '}}}');

Laravel4.x: {{{ text }}}:内容标签, @{{ text }}:原始标签, {{ text }}: 转义 tags/Default.

Laravel5.x: {{ text }}:内容标签, @{{ text }}:原始标签, {!! text !!}:转义标签。

Blade 太神奇了!