Laravel 4:刀片布局中的if语句工作异常

Laravel 4:刀片布局中的if语句工作异常,laravel,laravel-4,blade,Laravel,Laravel 4,Blade,有人能解释一下,如果我正常请求页面(而不是ajax),为什么会出现带有打印字符串“@extends('layouts.default')”的空白屏幕 我试图用Ajax解决这个问题,我不想为每种请求类型创建两个模板,而且我确实想使用刀片模板,所以使用控制器布局对我不起作用。如何在刀片模板中执行此操作?我在看这个 顺便说一下。如果我使用ajax请求它,它会正常工作。尝试将@extends移动到第1行,您将看到刀片模板将正确渲染 至于解决ajax问题,我认为最好将逻辑移回控制器 示例: … if (

有人能解释一下,如果我正常请求页面(而不是ajax),为什么会出现带有打印字符串“@extends('layouts.default')”的空白屏幕

我试图用Ajax解决这个问题,我不想为每种请求类型创建两个模板,而且我确实想使用刀片模板,所以使用控制器布局对我不起作用。如何在刀片模板中执行此操作?我在看这个


顺便说一下。如果我使用ajax请求它,它会正常工作。

尝试将
@extends
移动到第1行,您将看到刀片模板将正确渲染

至于解决ajax问题,我认为最好将逻辑移回控制器

示例:

…
if ( Request::ajax() )
{
    return Response::eloquent($books);  
} else {
    return View::make('book.index')->with('books', $books);
}
…

查看此线程了解更多信息:

是@extends必须位于第1行

我找到了PJAX的解决方案。起初我不确定这是否能解决我的问题,但它确实解决了。不知道为什么我害怕失去刀片的功能,如果你真的不能这样失去它。如果有人正在使用PJAX,并且需要使用一个模板(带布局和不带布局),这可能是您的解决方案:

protected $layout = 'layouts.default';

public function index()
{
  if(Request::header('X-PJAX'))
  {
    return $view = View::make('home.index')
      ->with('title',  'index');
  }
  else
  {
    $this->layout->title = 'index';
    $this->layout->content = View::make('home.index');
  }
}

你仍然可以像这样在第一行中以人手不足的方式运行你的状态

@extends((Request::ajax())?"layout1":"layout2")

问题是,如果是ajax请求,我根本不需要呈现布局。我需要纯html的数据视图。所以我需要打开布局渲染。我知道我可以使用控制器布局,但我也想使用刀片功能。
@extends((Request::ajax())?"layout1":"layout2")