3

所以我在我的模板中使用刀片(显然不是最新版本,但这并不重要)

@layout('master')

@section('mainContent')
my contents here
@endsection

它工作得很好,但问题是当我通过 ajax 请求调用页面时,我不想显示布局,只显示 mainContent 部分

像这样的东西....也许更干净

@if(!$is_ajaxCall)
@layout('master')
@endif

@if(!$is_ajaxCall)
@section('mainContent')
@endif
my contents here

@if(!$is_ajaxCall)
@endsection
@endif
4

2 回答 2

4

你确实非常接近。用于Request::ajax()确定这一点。

@if(!Request::ajax())
    @layout('master')
@endif

您也可以考虑使用 Blade Extensions 来执行此操作。您需要创建 Blade Extension(例如,从您的before过滤器),然后调用它。然后,您可以进行如下所示的调用:

@layoutNoAjax('master')

要了解如何扩展 Blade,请参阅这篇文章:http ://blog.zerilliworks.net/blog/2013/04/03/blade-extensions-in-laravel/

更新

我的错。请看这个答案:https ://stackoverflow.com/a/15170353/1626250

此外,您标记laravel-4了 ,使用了@extends,而不是@layout

于 2013-07-30T05:20:02.737 回答
3

IMO,检查ajax请求不是视图的责任,而是控制器的责任。

如果您创建了两个文件,一个用于正常请求,另一个用于 ajax 请求,然后其中一个包含另一个,该怎么办?

例如:

模板文件mypage.blade.php

@layout('master')

@section('mainContent')
    @include('mypage.ajax')
@endsection

模板文件mypage.ajax.blade.php

my contents here

然后,它只是调用view::make('mypage')or的问题view::make('mypage.ajax')

于 2014-05-12T15:12:15.617 回答