我一直在尝试制作简单的刀片模板。这是代码:
routes.php文件
<?php
Route::get('/', function()
{
return View::make('hello');
});
BaseController.php
<?php
class BaseController extends Controller {
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
}
hello.blade.php
<!DOCTYPE html>
<html>
<head>
<title>swag</title>
</head>
<body>
hello
@yield('content')
</body>
</html>
content.blade.php
@extends('hello')
@section('content')
<p>content check</p>
@stop
当我在浏览器中运行此代码时,所有内容都只是我在hello.blade.php中编写的hello文本,但是yield(&#39; content&#39;)没有显示任何内容,我可以&#39;弄清楚原因。我很感激任何帮助,谢谢
答案 0 :(得分:12)
您创建了错误的视图。父视图为hello
,它不了解content
。这就是您编写@extends('hello')
的原因,当您创建content
视图时,它会知道它必须从hello
扩展内容。
Route::get('/', function()
{
return View::make('content');
});
答案 1 :(得分:3)
对于所有挣扎于此的人,请确保您的模板php文件是带有刀片扩展名的名称,如下所示: mytemplate.blade.php ,如果您犯了错误的离开.blade扩展名出来后,您的模板将无法正确解析。
答案 2 :(得分:2)
你应该使用
@extends('layouts.master')
而不是
@extends('hello')
在您的hello.blade.php
视图文件中,并确保您的views/layouts
目录中有一个主版面,以便hello.blad.php
扩展主版面并显示模板。
实际上,您的hello.blade.php
文件应为master.blade.php
,而hello.blade.php
应扩展此主版块,以便hello.blade.php
看起来像这样:
@extends('layouts.master')
@section('content')
<p>content check</p>
@stop
master.blade.php
文件:
<!DOCTYPE html>
<html>
<head>
<title>swag</title>
</head>
<body>
@yield('content')
</body>
</html>