Laravel Blade @yield和逃脱

时间:2015-11-24 18:06:12

标签: php laravel blade yield

在Laravel 5中,我有一个包含以下内容的主模板:

<title>@yield('title') | Site Name</title>

在我看来,我有:

@extends('master')

@section('title', $client->name)

...

问题是,@ yield不会转义传递给它的数据。到目前为止,我发现的唯一解决方案是手动转义数据,如下所示:

@section('title', e($client->name))

这是最好的方法吗?这意味着我必须在每个使用变量的视图上手动转义数据。我没有看到从主模板中转义@yield指令的方法 - 在@yield周围使用{{ }}e()不起作用。

2 个答案:

答案 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