【问题标题】:@yield placed at wrong place@yield 放置在错误的位置
【发布时间】:2023-03-20 20:16:02
【问题描述】:

我是 Laravel 的新手,我第一次尝试做一个“模块化”页面。一切都很好,我的基本布局在我的主页上得到了扩展,已经设置了一些没有问题的部分/产量(内容、标题等),但是一个特定的 @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">

【问题讨论】:

    标签: php laravel laravel-5.4


    【解决方案1】:

    这是正常的浏览器行为。首先,您必须将所有东西放在正确的位置。就像你想吃一些没有叉子的肥肉,然后哭着说你的手很肥:) 您总是必须定义浏览器期望的所有标签。标题标签定义页面的内部标题所在的位置。 yield('title') 仅表示您为其插入的名称。它看起来像 HTML 中的id。 由于您没有向浏览器描述 what 你想在这里插入它试图解决问题,它通常是放置所有不需要标签的东西在正文中(仅当我们谈论省略时标头中的标签)。

    【讨论】:

    • 看来我很笨。如果@yield 包含有效的 html 标记,它将被放置在正确的位置
    • @IsraelPinheiro yield 只是将要命名的文本放在括号中的命令。它也可能包含 HTML,因此它会从您之前输入的字符串中放置您的 &lt;title&gt;。不过还是要设置title标签
    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多