19

@extendsBlade テンプレート言語で条件ステートメントを実行する方法はありますか?

私が試したこと:

@if(!Request::ajax())
    @extends('dashboard.master')
    @section('content')
@endif

<div class="jumbotron">
    Hey!
</div>

@if(!Request::ajax())
    @stop
@endif

出力

リクエストが AJAX でない場合は出力されました@extends('dashboard.master')が、AJAX リクエストは正常に機能しました。

私がやろうとしていること

要求されたコンテンツを簡単に表示できるように、AJAX のマスター テンプレート ( と を含む)headerを含めるのをやめます。footer

4

3 に答える 3

68
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
于 2013-10-30T19:01:57.270 に答える
11

マスター レイアウト:

   @if(!Request::ajax())

       //the master layout with @yield('content'). i.e. your current layout

   @else

       @yield('content')

   @endif
于 2013-08-30T03:53:03.750 に答える
3

この種のロジックは、実際にはテンプレートから除外する必要があります。

コントローラーで$layoutプロパティをdashboard.masterに設定してから、ビューまたは応答を返すように呼び出す代わりに、次のように終了します$this->layout->content = View::make('dashboard.template')

これに関するLaravelのドキュメントを見てください

あなたはこのようなものになってしまう可能性があります

<?php

class Something extends BaseController {

    $layout = 'dashboard.master';

    public function getIndex()
    {
        $template = View::make('dashboard.template');

        if(Request::ajax()) {
            return $template;
        }

        $this->layout->content = $template;
    }
}
于 2013-08-30T03:32:03.770 に答える