laravel布局模板丢失在子文件夹url刀片

时间:2014-03-16 17:23:53

标签: templates laravel blade

当网址是子文件夹时,我的模板布局刀片不会呈现。

我做了一个测试示例来检查:

网址/测试没问题

但是

URL / tests / 1 / edit丢失外部布局模板,仅渲染内容。

的TestController:

class TestController extends AdminController {

 protected $layout = 'layouts.admin';

public function index()
{
    // load the view
    $this->layout->content=View::make('tests.index');

}
public function edit($id)
{
    //
    $course=Course::find($id);

    return View::make('tests.edit')->with(array('course'=>$course));
}

}

布局admin.blade.php

<html><body>
{{ $content }}
</body>
</html>

tests / index.blade.php

hello

/ tests渲染源代码完整布局html代码,并在正确的网站示例上正常工作

测试/ edit.blade.php

edit

/ tests / 1 /编辑没有布局HTML的渲染

使用刀片有多种方法,但我认为最简单的方法是使用受保护的布局,但似乎存在问题?

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

在编辑方法中而不是

return View::make('tests.edit')->with(array('course'=>$course));

使用:

$this->layout->content= View::make('tests.edit')->with(array('course'=>$course));

答案 1 :(得分:0)

AdminController TestController的基本控件中,添加布局设置,将此代码放入AdminController

protected $layout = 'layouts.master';

protected function setupLayout()
{
    if ( ! is_null($this->layout))
    {
        $this->layout = View::make($this->layout);
    }
}

现在,您可以使用任何具有以下内容的视图:

$this->layout->content = View::make('tests.edit')->with(array('course'=>$course));

此处tests.edit表示edit.blade.php(如果不是edit.php文件位于app/views/tests/目录中也可以index

使用的$this->layout->content=View::make('tests.index'); 方法:

layout

所以layout出现了,因为您将数据设置为布局,但在其他示例中,您没有将数据设置为return View::make('tests.edit')->with(array('course'=>$course)); 因此布局不会呈现,它只会返回查看如下:

content

因此,在基本控制器类中设置布局,以便在每个控制器中不必设置布局,但始终使用以下内容将数据设置为布局的$this->layout->content = 'your data'; 变量:

{{1}}