所以我在我的模板上使用刀片(显然不是最新版本,但这并不重要)
@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
答案 0 :(得分:4)
你确实很亲密。使用Request::ajax()
来确定这一点。
@if(!Request::ajax())
@layout('master')
@endif
您也可以考虑使用Blade Extensions来执行此操作。您需要创建刀片扩展(例如,从您的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
的{{1}}。
答案 1 :(得分: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')
或view::make('mypage.ajax')
。