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
The Blade is a powerful templating enginetemplating engineTemplate system may refer to: Template processor, software designed to combine templates with a data model to produce result documents. Web template system, a system that allows web designers and developers work with web templates to automatically generate custom web pages.https://en.wikipedia.org › wiki › Template_systemTemplate system - Wikipedia in a Laravel framework. The blade allows to use the templating engine easily, and it makes the syntax writing very simple. The blade templating engine provides its own structure such as conditional statements and loops.
Blade is the simple, yet powerful templating enginetemplating engineTemplate system may refer to: Template processor, software designed to combine templates with a data model to produce result documents. Web template system, a system that allows web designers and developers work with web templates to automatically generate custom web pages.https://en.wikipedia.org › wiki › Template_systemTemplate system - Wikipedia that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates.
To generate such a view component, you can call php artisan make:component Alert . This will generate two files for you: resources/views/components/alert.
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
in the master layout:
@if(!Request::ajax())
//the master layout with @yield('content'). i.e. your current layout
@else
@yield('content')
@endif
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;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With