5

进入 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,也没有添加任何样式,因为我只是在测试刀片模板引擎的工作方式。

4

5 回答 5

6

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

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

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

于 2015-12-30T08:16:42.413 回答
0

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

@extends('master')
于 2015-12-30T08:16:23.933 回答
0

您应该扩展header.blade.phpfrom master.blade.php。将以下行添加到的第一行header.blade.php

@extends('master')

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

大师之刃.php

@yield('header')

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

@section('header')
    header content
@stop

pastebin.com 链接:

大师之刃.php

header.blade.php

于 2015-12-30T08:18:56.107 回答
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>
于 2015-12-30T09:14:10.647 回答
0

我遇到了类似的问题:

布局/用户配置文件.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')

用户配置文件/创建/个人信息.blade.php

@section('footer')
  @parent
  // subsection scripts
@stop
于 2016-11-25T16:23:19.170 回答