只是玩Laravel 5,并且使用Blade模板语法时遇到了困难。似乎所有我的特殊角色都被逃脱了。我的设置有问题吗?
为了显示我的设置,我已将以下内容添加到config/app.php
:
别名:'Form' => 'Illuminate\Html\FormFacade', 'Html' => 'Illuminate\Html\HtmlFacade'
服务提供商:'Illuminate\Html\HtmlServiceProvider'
现在我的刀片视图:
@extends('layout')
@section('content')
{{ Form::open() }}
{{ Form::close() }}
@stop
以下是浏览器中的输出:
<form method="POST" action="http://test.app:8000/categories/create" accept-charset="UTF-8"><input name="_token" type="hidden" value="m4RdpqdbbqQ2F7iwfDkSDKTzEmaBGNvpJbj5LnqE"> </form>
这是view-source的输出:
<!doctype HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>My Site</title>
</head>
<body>
<header></header>
<content>
<form method="POST" action="http://test.app:8000/categories/create" accept-charset="UTF-8"><input name="_token" type="hidden" value="m4RdpqdbbqQ2F7iwfDkSDKTzEmaBGNvpJbj5LnqE">
</form>
</content>
</body>
</html>
答案 0 :(得分:31)
在Laravel 5中,{{ }}
将自动转义。您现在需要使用的是{!! !!}
。
{!! Form::open() !!}
{!! Form::close() !!}
有关此更改的更多信息,请参阅https://laracasts.com/discuss/channels/general-discussion/new-blade-tag-for-unescaped-data-thoughts(感谢@ user1960364)。
答案 1 :(得分:1)
如果必须使用旧的(L4.2或更低版本)Blade语法,请在AppServiceProvider @ register的底部添加以下行:
\Blade::setRawTags('{{', '}}');
\Blade::setContentTags('{{{', '}}}');
\Blade::setEscapedContentTags('{{{', '}}}');
这不应该轻易做到,并且可能会使您的应用程序更容易受到XSS攻击,因此请谨慎使用。