当网址是子文件夹时,我的模板布局刀片不会呈现。
我做了一个测试示例来检查:
网址/测试没问题
但是
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的渲染
使用刀片有多种方法,但我认为最简单的方法是使用受保护的布局,但似乎存在问题?
任何帮助表示感谢。
答案 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}}