基本刀片模板不起作用

时间:2014-09-26 17:30:40

标签: php laravel blade

这是我的路线

Route::get('test', array('uses'=>'TestController@showTest'));

这是我的控制器:

class TestCOntroller extends \BaseController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function showTest()
{
    return View::make('test.Test');
}}

这是我的观点/ test / Test.blade.php

          @section('content')
         <h1>HTML Ipsum Presents</h1>
          @stop

当我尝试访问该网址时,它什么也没显示。我该怎么办?

3 个答案:

答案 0 :(得分:3)

@section('content')定义了一个您永远不会显示的内容块,您基本上是设置一个变量,而不是将其打印到屏幕上。

创建一个名为layout或其他的模板并将其放入其中。

<!DOCTYPE html>
<html>
<head>
    <title>hooray!</title>
</head>
<body>
    @yield('content')
</body>
</html>

并将@extends('layout')放在当前模板的顶部。

然后您的内容会显示出来。

答案 1 :(得分:3)

您没有从任何其他刀片模板进行扩展,因此没有定义任何部分content

您正在使test/Test查看顶级视图,您需要在该视图中定义HTML的整个结构。

尝试创建新视图,例如app/view/layouts/master.blade.php,并将此内容添加到:

<!DOCTYPE html>
<html>
    <head></head>
    <body>

     @yield('content', '')

    </body>
</html>

修改您的测试视图以将其包含在顶部:

@extends('layouts.master')

答案 2 :(得分:2)

根据您的Route,如下所示:

Route::get('test', array('uses'=>'TestController@showTest'));

您的Controller应该是:

class TestController extends \BaseController {

    public function showTest()
    {
        return View::make('test.test');
    }
}

所以在这种情况下,Blade View应该是这样的:

// app/views/test/test.blade.php
@extends('layouts.master')

@section('content')
    <h1>HTML Ipsum Presents</h1>
@stop

确保layouts文件夹中有一个views文件夹,其中包含一个master.blade.php文件作为主Layout,应该是这样的:

<!-- app/views/layouts/master.blade.php -->
<html>
    <head>
        <title>Test Site</title>
    </head>
    <body>
        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

因此,无论何时通过扩展master.blade.php创建视图,html/text@section('content')@stop中包含的child-view都会被转储到@yieldmaster.blade.php文件中的位置,因此请始终使用child-view扩展主模板以创建@extend('layouts.master')。有关Templating的详细信息,请访问Laravel网站。