11

Laravel を使用して、ビューで特定のセクションが定義されているかどうかに応じてレイアウトを変更するにはどうすればよいですか?

セクションが存在しない場合、デフォルトのテキスト表示を使用できることはわかっていますが、次のシナリオを想像してください。

<div class="row">  
     <div class="col-sm-9"> 
         @yield('content')
     </div>
     <div class="col-sm-3">
         @section('sidebar')
         @show
     </div>
</div>

したがって、私のビューが @section 'サイドバー' を定義している場合、これはうまく機能します。しかし、ビューでサイドバーが定義されていない場合、メイン コンテンツ列を col-sm-9 にするのではなく、col-sm-12 にしたいのです。私はこのようなことができることを望んでいました:

@if(@section('sidebar'))
    <div class="row">  
        <div class="col-sm-9"> 
            @yield('content')
        </div>
        <div class="col-sm-3">
            @section('sidebar')
            @show
        </div>
    </div>
@else
    <div class="row">  
        <div class="col-sm-12"> 
            @yield('content')
        </div>
    </div>
@endif

しかし、それはうまくいかないようです。誰かが代替案を提案できますか?

ありがとう!

4

2 に答える 2

10

これを使用して、セクションが定義されているかどうかを確認できます。

@if (!empty($__env->yieldContent('sidebar')))
   //It is defined
@endif

$__env->yieldContent()指定されたセクションのコンテンツを返します。定義されていないか空の場合は空の文字列を返します。

編集

PHP 5.5 より前empty() では、関数の結果を直接処理できないためtrim()、代わりに次のように使用できます。

@if (trim($__env->yieldContent('sidebar')))
   //It is defined
@endif
于 2015-10-01T13:43:57.493 に答える