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