я использую 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
добавлен автоматически в конце раздела рендеринга.
У вас есть идея, как избежать этого нежелательного поведения?
я точно уверен @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
Ты можешь использовать {{trim(View::yieldContent('description'))}}
У меня такая же проблема. У меня было несколько модальных окон на странице, которые имели общий макет, но разные тела, заголовки и атрибуты «id». Таким образом, атрибут «id» должен быть получен без пробелов вокруг.
@yield
заявление компилируется в echo $__env->yieldContent
вызов (BladeCompiler.php, метод compileYield). $_env
вот пример \Illuminate\View\Factory
, Так что вы можете использовать {{trim(View::yieldContent('description'))}}
где View это фасад.
Начиная с Laravel 5, решение, которое мне нравится больше всего:
@section('description', 'this is the contact page')