В Laravel 5 у меня есть мастер-шаблон, содержащий:
<title>@yield('title') | Site Name</title>
И на мой взгляд, я имею:
@extends('master')
@section('title', $client->name)
...
Проблема в том, что @yield не экранирует передаваемые ему данные. Пока что единственное решение, которое я нашел, это вручную экранировать данные следующим образом:
@section('title', e($client->name))
Это лучший метод? Это означает, что мне нужно вручную экранировать данные для каждого представления, в котором я использую переменную. Я не вижу способа избежать директивы @yield из основного шаблона — используя {{ }}
или же e()
вокруг @yield не работает.
Почему бы не сделать следующее:
@section('title') {{$client->name}} @endsection
По крайней мере, это согласуется с экранированием данных в остальных ваших представлениях. То, как у вас это есть, вы, скорее всего, можете пропустить e()
, С учетом вышеизложенного вы сможете сразу увидеть при рендеринге вид, если вам не удалось избежать.
ОБНОВИТЬ
Как насчет использования необработанного PHP:
<title> <?php echo e($__env->yieldContent('title')); ?> | Site Name</title>
Это то, что двигатель шаблона лезвия заменяет @yield
с, но я добавил спасатель.
Это должно означать, что вам не нужно бежать @section
, Я думаю, что это будет работать, не пробовал.
Делать
@section('title')
{{ $client->name }}
@stop