Blade中的条件扩展

时间:2013-08-30 03:18:36

标签: php ajax laravel blade

有没有办法在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包含主模板(包括headerfooter),以便轻松显示所请求的内容

3 个答案:

答案 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;
    }
}