Ответ 1
в макете макета:
@if(!Request::ajax())
//the master layout with @yield('content'). i.e. your current layout
@else
@yield('content')
@endif
Есть ли способ сделать условный оператор @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, чтобы он мог легко отображать запрошенный контент
в макете макета:
@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
значение 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;
}
}