Есть ли способ сделать условное @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'). ie 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 на этот
Вы могли бы получить что-то вроде этого
<?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; } }