Reputation: 3026
Is there any way to do a conditional @extends
statement in the Blade templating language?
@if(!Request::ajax())
@extends('dashboard.master')
@section('content')
@endif
<div class="jumbotron">
Hey!
</div>
@if(!Request::ajax())
@stop
@endif
When the request was not AJAX it printed out @extends('dashboard.master')
, but the AJAX request worked fine.
Stop including the master template (which includes header
and footer
) for AJAX so it can easily display the requested content
Upvotes: 20
Views: 16045
Reputation: 1235
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
Upvotes: 76
Reputation: 6393
in the master layout:
@if(!Request::ajax())
//the master layout with @yield('content'). i.e. your current layout
@else
@yield('content')
@endif
Upvotes: 12
Reputation: 783
This kind of logic should really be kept out of the template.
In your controller set the $layout
property to be dashboard.master then instead of calling returning your view or response, terminate with just $this->layout->content = View::make('dashboard.template')
Take a look at the Laravel docs on this
You could end up with something like this
<?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;
}
}
Upvotes: 3