也许这是我缺少的一件简单的事情,但在我的laravel刀片模板中,我有这样的东西:
{{ Form::model(....) }}
... my fields ...
{{ Form::close() }}
这会导致转义HTML,因此表单标记实际上会打印到屏幕上。但是,如果我这样做:
{!! Form::model(....) !!}
... my fields ...
{!! Form::close() !!}
它按预期工作。输出html时是否总是需要使用{!! ... !!}
?我在上面读到的所有教程都显示了使用{{ Form::model(...) }}
的常规惯例来打开表单。谢谢你的建议!使用Laravel 5 fwiw。
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('{{{', '}}}');
过去{{ text }}
是未转义的,{{{ text }}}
是转义的,但随着Laravel 5的出现,情况发生了变化。现在,{{ text }}
表示转义,{!! text !!}
表示未转义。因此,是的,在Laravel 5中,HTML总是需要后者。
最有可能的是,你读过的所有教程都在使用旧版本。我将是第一个承认这可能有点令人困惑的人。我自己还不太习惯
供参考:http://laravel.com/docs/5.0/templates-Laravel 5http://laravel.com/docs/4.2/templates-Laravel 4
Laravel4.x:CCD_ 13:内容标签,CCD_ 14:原始标签,{{ text }}
:转义标签/默认值。
Laravel5.x:CCD_ 16:内容标签,CCD_ 17:原始标签,{!! text !!}
:转义标签。
刀锋是魔法!