Ответ 1
Да, вы можете передать значение по умолчанию
Просматривая документацию
@yield('sidebar', 'Default Content');
Который в основном помещает вывод по умолчанию, когда дочерний шаблон не имеет @section('sidebar')
Если у меня есть макет под названием RightSideBar.blade.php
в RightSideBar.blade.php
Laravel blade
, один yield('content')
области yield('content')
и другой yield('sidebar')
.
Есть ли встроенный способ отображения default partial
если у представления, расширяющего RightSideBar
, нет section('sidebar')
?
Я знаю, что вы можете передать значение по умолчанию, просто интересно, есть ли способ сделать дефолт частичным.
Да, вы можете передать значение по умолчанию
Просматривая документацию
@yield('sidebar', 'Default Content');
Который в основном помещает вывод по умолчанию, когда дочерний шаблон не имеет @section('sidebar')
В большинстве случаев мы хотим иметь несколько строк по умолчанию, мы можем использовать этот синтаксис:
@section('section')
Default content
@show
Например, у меня есть это в файле шаблона:
@section('customlayout')
<article class="content">
@yield('content')
</article>
@show
Вы можете увидеть разницу между @show и @stop/@endsection: приведенный выше код эквивалентен приведенному ниже:
@section('customlayout')
<article class="content">
@yield('content')
</article>
@stop
@yield('customlayout')
В других файлах просмотра я могу либо установить только контент:
@section('content')
<p>Welcome</p>
@stop
Или я также могу установить другой макет:
@section('content')
<p>Welcome</p>
@stop
@section('defaultlayout')
<div>
@yield('content')
</div>
@stop
@stop эквивалентен @endsection.
Хотя в документах указано значение по умолчанию только в виде строки, фактически вы можете передать представление
@yield('sidebar', \View::make('defaultSidebar'))
В Laravel 5.2 добавлена директива @hasSection
которая проверяет, определен ли раздел в представлении. Это не упомянуто в 5.3 или 5.4 документах по некоторым причинам.
@hasSection('sidebar')
@yield('sidebar')
@else
@yield('default-sidebar')
@endif