19

有没有办法@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 请求工作正常。

我正在尝试做的事情

停止包含 AJAX 的主模板(包括headerfooter),以便它可以轻松显示请求的内容

4

3 回答 3

68
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
于 2013-10-30T19:01:57.270 回答
11

在主布局中:

   @if(!Request::ajax())

       //the master layout with @yield('content'). i.e. your current layout

   @else

       @yield('content')

   @endif
于 2013-08-30T03:53:03.750 回答
3

这种逻辑真的应该被排除在模板之外。

在您的控制器中将$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;
    }
}
于 2013-08-30T03:32:03.770 回答