此 Blade 卫生系统是否正常工作(双花括号与三花括号)?

2024-03-24

很抱歉,这很可能是我自己的误解,而不是实际存在的问题。我对 Laravel 和 Blade 模板相当陌生,我正在尝试输出从Input::get。然而,当我通过双花括号和三花括号输出字段时,输出之间似乎没有区别。

这是我的观点的摘录:

@ $data = Input::only('name', 'date');

{{ "Unfiltered input: ".$data['name'] }}

<br />

{{{ "Filtered input: ".$data['name'] }}}

但是,当我提供带有特殊字符或代码的输入并查看渲染页面的源代码时,我会看到为两者渲染的相同的、未经过滤的输入。

根据Laravel 文档 http://laravel.com/docs/4.2/templates,我想严格使用{{{ }}}输出到视图时,但我没有看到它实际上被“转义或纯化”。我还没有完全开始设置验证 http://laravel.com/docs/4.2/validation,我认为这是安全和卫生的主要冲击所在,对吗?但现在只关注这一点,我是否误解了三重花括号的作用?或者他们在幕后做着工作,而我只是没有看到最终结果?当像这样输出用户输入时,我还应该做其他事情(除了设置验证层之外)吗?


拉拉维尔 4

双花括号和三花括号之间的唯一区别是三花括号将值贯穿e()helper 函数,它只是 PHP htmlentities 函数的快捷方式。

{{ "Unfiltered input: ".$data['name'] }}
{{{ "Filtered input: ".$data['name'] }}}

被编译为:

<?php echo "Unfiltered input: ".$data['name']; ?>
<?php echo e("Filtered input: ".$data['name']); ?>

但是,所有这一切都发生在输出上。它与清理输入没有任何关系。

拉拉维尔 5

在 Laravel 5 中,Blade 语法已更改,双花括号 ({{ }}) 将转义输出,并且新的大括号双感叹语法 ({!! !!}) 不会转义输出。

So,

{{ "Filtered input: ".$data['name'] }}
{!! "Unfiltered input: ".$data['name'] !!}

被编译为:

<?php echo e("Filtered input: ".$data['name']); ?>
<?php echo "Unfiltered input: ".$data['name']; ?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

此 Blade 卫生系统是否正常工作(双花括号与三花括号)? 的相关文章

随机推荐