有没有办法在Blade模板语言中执行条件@extends
语句?
@if(!Request::ajax())
@extends('dashboard.master')
@section('content')
@endif
<div class="jumbotron">
Hey!
</div>
@if(!Request::ajax())
@stop
@endif
当请求不是AJAX时,它打印出@extends('dashboard.master')
,但AJAX请求工作正常。
停止为AJAX包含主模板(包括header
和footer
),以便轻松显示所请求的内容
答案 0 :(得分:41)
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
答案 1 :(得分:10)
:
@if(!Request::ajax())
//the master layout with @yield('content'). i.e. your current layout
@else
@yield('content')
@endif
答案 2 :(得分:4)
这种逻辑应该真的不在模板之外。
在您的控制器中将$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;
}
}