@yield放在错误的地方

时间:2017-07-19 02:02:41

标签: php laravel laravel-5.4

我是Laravel的新手,我正试图做一个&#34; modular&#34;页面第一次。一切都很顺利,有我的基本布局,在我的主页上扩展,设置了一些没有问题的部分/产量(内容,标题等),但一个特定的@yield一直在错误的地方呈现,我已经将它放在我的头文件(head.blade.php)中,它已经有了另一个@yield的标题,但是那个一直在体内呈现。我尝试做了一些测试,并发现如果我将标题@yield放在<title></title>里面就可以了,但是如果我把它放在标签之外它会被移到身体上。 这是一种正常的Laravel工作方式(@yield不能单独存在,只能在标签内)或出现问题?

default.blade.php

<!doctype html>
<html>
    <head>
        @include('includes.head')
    </head>
    <body>
        <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--no-desktop-drawer-button">
            @include('includes.nav')
            @yield('tools')
            <main class="mdl-layout__content">
                <div class="page-content">
                    @yield('content')
                </div>
            </main>
            @include('includes.footer')
        </div>
    </body>
</html>

head.blade.php

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="cache-control" content="no-cache">
<meta name="description" content="XXXXXX">
<meta name="author" content="XXXXXXXXXXXXX">
<title>@yield('title')</title>  =====> Works normally if put here
@yield('title') =====> Rendered inside the body if put that way
<!-- jQuery 3.2.1 -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<!-- Normalize CSS -->
<link rel="stylesheet" type="text/css" href="css/normalize.css">
<!-- Dialog Polyfill -->
<link rel="stylesheet" type="text/css" href="css/dialog-polyfill.css">
<!-- Bootstrap 3.3.7 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

1 个答案:

答案 0 :(得分:1)

这是一种正常的浏览器行为。首先,你必须将所有东西放在正确的位置。这就像你正在尝试吃一些没有叉子的肥肉,然后哭着你的手在胖:) 您始终必须定义浏览器所期望的所有标记。标题标签定义页面的内部标题所在。 cp Dir1/* OutputDir/ cp --backup=existing --suffix=.2 Dir2/* OutputDir/ cd OutputDir # next line from here: https://stackoverflow.com/questions/3211595/renaming-files-in-a-folder-to-sequential-numbers ls | cat -n | while read n f; do mv "$f" "$n.jpg"; done 只是表示你在那里插入的名称。在HTML中看起来像yield('title')。 由于你没有向浏览器描述你要插入什么,所以它试图解决问题,它通常是一个放置所有东西而不需要标记在体内(只有当我们谈论省略时)标题中的标签。)