laravel Blade 中的条件扩展
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18524365/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Conditional extends in Blade
提问by Jordan Doyle
Is there any way to do a conditional @extends
statement in the Blade templating language?
有没有办法@extends
在 Blade 模板语言中做一个条件语句?
What I've tried:
我试过的:
@if(!Request::ajax())
@extends('dashboard.master')
@section('content')
@endif
<div class="jumbotron">
Hey!
</div>
@if(!Request::ajax())
@stop
@endif
Output
输出
When the request was not AJAX it printed out @extends('dashboard.master')
, but the AJAX request worked fine.
当请求不是 AJAX 时,它会打印出来@extends('dashboard.master')
,但 AJAX 请求工作正常。
What I'm trying to do
我想做什么
Stop including the master template (which includes header
and footer
) for AJAX so it can easily display the requested content
停止包含AJAX的主模板(包括header
和footer
),以便它可以轻松显示请求的内容
采纳答案by itachi
in the master layout:
在主布局中:
@if(!Request::ajax())
//the master layout with @yield('content'). i.e. your current layout
@else
@yield('content')
@endif
回答by Christopher Raymond
@extends((( Request::ajax()) ? 'layouts.ajax' : 'layouts.default' ))
回答by Adam Lavin
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')
在您的控制器中将$layout
属性设置为dashboard.master 然后而不是调用返回您的视图或响应,只需终止$this->layout->content = View::make('dashboard.template')
Take a look at the Laravel docson this
看看关于这个的Laravel 文档
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;
}
}