在Laravel 5中,我有一个包含以下内容的主模板:
<title>@yield('title') | Site Name</title>
在我看来,我有:
@extends('master')
@section('title', $client->name)
...
问题是,@ yield不会转义传递给它的数据。到目前为止,我发现的唯一解决方案是手动转义数据,如下所示:
@section('title', e($client->name))
这是最好的方法吗?这意味着我必须在每个使用变量的视图上手动转义数据。我没有看到从主模板中转义@yield指令的方法 - 在@yield周围使用{{ }}
或e()
不起作用。
答案 0 :(得分:8)
为什么不这样做:
@section('title') {{$client->name}} @endsection
这至少与其他视图中的转义数据一致。你拥有它的方式,你很可能会错过e()
。通过上述操作,如果您没有转义,则可以在渲染视图时立即看到。
更新
使用原始PHP怎么样:
<title> <?php echo e($__env->yieldContent('title')); ?> | Site Name</title>
这是刀片模板引擎替换@yield
的内容,但我添加了转义帮助程序。
这应该意味着你不需要逃避@section
。我认为这样可行,但没试过。
答案 1 :(得分:0)
待办事项
@section('title')
{{ $client->name }}
@stop