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

есть ли способ сделать условный @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 работал нормально.

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

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

3 ответов


в генплане:

   @if(!Request::ajax())

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

   @else

       @yield('content')

   @endif

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

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

в вашем контроллере установите $layout свойства панели.мастер тогда вместо вызова возврата вашего представления или ответа, завершите с помощью just $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;
    }
}