也许这是一件我想念的简单事情,但在我的laravel刀片模板中,我有类似的东西:
{{ Form::model(....) }}
... my fields ...
{{ Form::close() }}
这会导致转义为HTML,因此表单标签实际上会打印到屏幕上。但是,如果我这样做:
{!! Form::model(....) !!}
... my fields ...
{!! Form::close() !!}
它按预期工作。输出html时是否总是需要使用{!! ... !!}
?我读过的所有教程只是使用{{ Form::model(...) }}
的常规约定来打开表单。谢谢你的建议!使用Laravel 5 fwiw。
答案 0 :(得分:2)
过去,{{ text }}
未被转义,{{{ text }}}
被转义,但是Laravel 5改变了。现在,{{ text }}
用于转义,{!! text !!}
1}}为未转义的。所以,是的,在Laravel 5中,你总是需要后者用于HTML。
最有可能的是,您阅读的所有教程都使用旧版本。我是第一个承认这可能有点令人困惑的人。哈文自己已经习惯了。 :)
供参考: http://laravel.com/docs/5.0/templates - Laravel 5 http://laravel.com/docs/4.2/templates - Laravel 4
答案 1 :(得分:2)
这是正确的。
{{ ... }}
原始html
使用{{{ ... }}}
htmlentities()
{!! ... !!}
原始html
显式转义内容的{{{ ... }}}
{{ ... }}
表示默认行为(也是转义)
如果你不喜欢它,你可以用这些方法改变所有这三个标签:
Blade::setRawTags($openTag, $closeTag);
Blade::setContentTags($openTag, $closeTag);
Blade::setEscapedContentTags($openTag, $closeTag);
要恢复Laravel 4处理事物的方式,你可以这样做:
Blade::setRawTags('{{', '}}');
Blade::setEscapedContentTags('{{{', '}}}');
答案 2 :(得分:0)
Laravel4.x:
{{{ text }}}
:内容标签,
@{{ text }}
:原始代码,
{{ text }}
:转义标记/默认。
Laravel5.x:
{{ text }}
:内容标签,
@{{ text }}
:原始代码,
{!! text !!}
:转义标记。
刀锋是神奇的!