Laravel中的刀片引擎 - 产量不起作用

时间:2014-03-18 17:01:57

标签: php laravel blade

我一直在尝试制作简单的刀片模板。这是代码:

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;弄清楚原因。我很感激任何帮助,谢谢

3 个答案:

答案 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>