Условное расширение в клинке

Есть ли способ сделать условный оператор @extends на языке шаблонов Blade?

Что я пробовал:

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

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

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

Выход

Когда запрос не был AJAX, он распечатал @extends('dashboard.master'), но запрос AJAX работал нормально.

Что я пытаюсь сделать

Остановить включение основного шаблона (который включает в себя header и footer) для AJAX, чтобы он мог легко отображать запрошенный контент

Ответ 1

в макете макета:

   @if(!Request::ajax())

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

   @else

       @yield('content')

   @endif

Ответ 2

@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))

Ответ 3

Эта логика должна быть действительно исключена из шаблона.

В вашем контроллере установите для свойства $layout значение dashboard.master вместо того, чтобы вызывать возврат вашего представления или ответа, завершите его только с помощью $this->layout->content = View::make('dashboard.template')

Взгляните на Laravel docs на этот

Вы могли бы получить что-то вроде этого

<?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;
    }
}