laravel刀片模板无法渲染

时间:2015-12-30 08:05:52

标签: php laravel laravel-5.1 laravel-blade

进入laravel并尝试使用刀片模板,但不能渲染。我的所有例子都是为laravel文档而来。

更新 这是我在资源>中的 master.blade.php文件。意见> master.blade.php

<!DOCTYPE html>
<html>
    <head>

        @yield('layouts.header')
    </head>
    <body>
        <div class="container">
            <div class="content">
                <div class="title">Test to Laravel 5</div>
            </div>
        </div>
    </body>
</html>

这是我的 header.blade.php文件,位于view / layouts /

@section('header')
    <title>cookie monster</title>
    <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
    <style>
        html, body {
            height: 100%;
        }

        body {
            margin: 0;
            padding: 0;
            width: 100%;
            display: table;
            font-weight: 100;
            font-family: 'Lato';
        }

        .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
        }

        .content {
            text-align: center;
            display: inline-block;
        }

        .title {
            font-size: 96px;
        }
</style>
@endsection

当我尝试渲染我的页面时,即使我有内联css,也没有添加任何样式,因为我只测试了刀片模板引擎的工作方式。

5 个答案:

答案 0 :(得分:4)

您希望使用@include('layouts.header')而不是@yield

@yield是您在主模板上使用的,用于指定内容的位置,然后您可以在子视图上定义。

@include“允许您轻松地在现有视图中包含Blade视图。” - https://laravel.com/docs/5.1/blade

答案 1 :(得分:0)

你的布局需要扩展一些东西。这样它就可以利用模板中定义的区域。

@extends('master')

答案 2 :(得分:0)

您应该从header.blade.php延长master.blade.php。 将以下行添加到header.blade.php

的第一行
@extends('master')

然后您可以编辑@yield。产量和截面必须相同。例如:

<强> master.blade.php

@yield('header')

header.blade.php (使用@stop代替@endsection

@section('header')
    header content
@stop

pastebin.com链接:

master.blade.php

header.blade.php

答案 3 :(得分:0)

布局:               

    @yield('header')
</head>
<body>
    <div class="container">
        <div class="content">
            @yield('content')
            <div class="title">Test to Laravel 5</div>
        </div>
    </div>
</body>
</html>

现在,您在控制器中使用

return view('someview');

并查看代码

@extend('layout')
@section('header')
<title>cookie monster</title>
@endsection
@section('content')
bla-bla-bla, render me IN content section of layout
@endsection

,结果应为

<!DOCTYPE html>
<html>
<head>

<title>cookie monster</title>
</head>
<body>
    <div class="container">
        <div class="content">
            bla-bla-bla, render me IN content section of layout
            <div class="title">Test to Laravel 5</div>
        </div>
    </div>
</body>
</html>

答案 4 :(得分:0)

我遇到了类似的问题:

布局/用户profile.blade.php

<body>
  @yield('main')
  @yield('footer')
</body>

用户简档/ create.blade.php

@extends('layouts.user-profile')

@section('main')
   <!-- include a personal-info sub-section -->
   @include($templateName)
@stop

@section('footer')
  <script></script>
@stop

问题在于这个子部分继承需要刀片@parent,因此所有@section('footer')块都在@yield('footer')

用户简档/创建/个人info.blade.php

@section('footer')
  @parent
  // subsection scripts
@stop