Laravel Blade @yield и убегающий

В Laravel 5 у меня есть мастер-шаблон, содержащий:

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

И на мой взгляд, я имею:

@extends('master')

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

...

Проблема в том, что @yield не экранирует передаваемые ему данные. Пока что единственное решение, которое я нашел, это вручную экранировать данные следующим образом:

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

Это лучший метод? Это означает, что мне нужно вручную экранировать данные для каждого представления, в котором я использую переменную. Я не вижу способа избежать директивы @yield из основного шаблона — используя {{ }} или же e() вокруг @yield не работает.

6

Решение

Почему бы не сделать следующее:

@section('title') {{$client->name}} @endsection

По крайней мере, это согласуется с экранированием данных в остальных ваших представлениях. То, как у вас это есть, вы, скорее всего, можете пропустить e(), С учетом вышеизложенного вы сможете сразу увидеть при рендеринге вид, если вам не удалось избежать.

ОБНОВИТЬ

Как насчет использования необработанного PHP:

<title> <?php echo e($__env->yieldContent('title')); ?> | Site Name</title>

Это то, что двигатель шаблона лезвия заменяет @yield с, но я добавил спасатель.

Это должно означать, что вам не нужно бежать @section, Я думаю, что это будет работать, не пробовал.

8

Другие решения

Делать

@section('title')
{{ $client->name }}
@stop
0

По вопросам рекламы [email protected]