почему лезвие laravel @yield добавляет новую строку (разрыв строки)

я использую blade templating с laravel 4.2

У меня есть небольшая проблема с @yield функция, которая работает с @section функция.

Скажем в моем макете шаблона layout.blade.php У меня есть следующее утверждение:

<meta name="description" content="@yield('description')">

И в contact.blade.php который расширяется layout.blade.php У меня есть это:

@section('description')
this is the contact page
@stop

Выход такой:

<meta name="description" content="this is the contact page
">

Проблема заключается в line break добавлен автоматически в конце раздела рендеринга.

У вас есть идея, как избежать этого нежелательного поведения?

7

Решение

я точно уверен @yield а также @section где не предназначен для использования в качестве переменной, а для замены частей содержимого в соответствии с потребностями каждой производной страницы.

Для этого вы должны либо передать параметр своему блейду view от controller лайк:

<meta name="description" content="{{ $page_description }}">

или рассмотрите возможность замены всего метатега (ов) для этой страницы, то есть:

layout.blade.php

<meta name="title" content="This is my page title for all pages">
@yield("additional_meta_tags")

contact.blade.php (или другие страницы)

@section("additional_meta_tags")
<meta name="description" content="this is the contact page">
@stop
4

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

Ты можешь использовать {{trim(View::yieldContent('description'))}}

Объяснение.

У меня такая же проблема. У меня было несколько модальных окон на странице, которые имели общий макет, но разные тела, заголовки и атрибуты «id». Таким образом, атрибут «id» должен быть получен без пробелов вокруг.

@yield заявление компилируется в echo $__env->yieldContent вызов (BladeCompiler.php, метод compileYield). $_env вот пример \Illuminate\View\Factory, Так что вы можете использовать {{trim(View::yieldContent('description'))}} где View это фасад.

11

Начиная с Laravel 5, решение, которое мне нравится больше всего:

@section('description', 'this is the contact page')
8
По вопросам рекламы [email protected]