web-dev-qa-db-ja.com

Laravelブレード:デフォルトのパーシャルを生成できますか

_RightSideBar.blade.php_に_Laravel blade_というレイアウトがある場合、1つの領域yield('content')ともう1つの領域yield('sidebar')があります。

RightSideBarを拡張しているビューにsection('sidebar')がない場合、_default partial_を表示する組み込みの方法はありますか?

デフォルトで渡すことができることはわかっています。

20
user3238419

はい、デフォルトを渡すことができます

ドキュメント を見る

@yield('sidebar', 'Default Content');

子テンプレートに@section('sidebar')がない場合、基本的にデフォルトの出力を配置します

29
lozadaOmr

ほとんどの場合、複数行のデフォルトコンテンツが必要なため、次の構文を使用できます。

@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と同等です。

12

ドキュメントはデフォルトを文字列としてのみ指定していますが、実際にはビューを渡すことができます

@yield('sidebar', \View::make('defaultSidebar'))
4

Laravel 5.2は、セクションがビューで定義されているかどうかをチェックする@hasSectionディレクティブを追加しました。 5.3または5.4のドキュメントでは、なんらかの理由で言及されていません。

@hasSection('sidebar')
    @yield('sidebar')
@else
    @yield('default-sidebar')
@endif
1