【问题标题】:Why Do Laravel Blade Templates Have Both @yield and @extend Directives?为什么 Laravel Blade 模板同时具有 @yield 和 @extend 指令?
【发布时间】:2019-01-30 08:46:29
【问题描述】:

我不明白为什么 Laravel 模板有两个互补但也可能相互矛盾的指令。在构建视图时,是否只是一个健壮的问题,还是创建更多选项,还是其他什么?

在官方文档中,容器定义了@sections 并使用@yield 语句从其他视图片段中“拉取”内容......对吗?

<!-- Stored in resources/views/layouts/app.blade.php -->
<html>
    <head>
        <title>App Name - @yield('title')</title>
    </head>
    <body>
        @section('sidebar')
            This is the master sidebar.
        @show
        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

然后使用@extends 语句在主布局中说“包裹我”来使用子组件。

<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.app')
@section('title', 'Page Title')

这不可避免地增加了它们有时相互矛盾的风险?

【问题讨论】:

    标签: laravel laravel-5 laravel-blade laravel-5.6


    【解决方案1】:

    好吧,@extends 仅用于表示 - 使用此模板作为基础模板,@yield 表示 - 您应该在此处放置具有给定名称的部分内容。

    因此,正如您在此处展示的那样,您可以创建带有大量 HTML 标记的基本模板,但有些部分是动态的,因此您可以在此处使用 @yield,然后您可以创建多个子模板,这些模板将在这些地方产生一些真正的价值 -所有这些模板都将扩展父模板,并定义每个 @yield 应该放置什么

    【讨论】:

    • 好的...我想我在关注你...但是让我问你这个问题。是否存在事情变得矛盾的情况? “容器”说在这里插入一块,而这块扩展了一个完全不同的容器?我想它会有点像狗的早餐。
    猜你喜欢
    • 2015-06-08
    • 2015-02-07
    • 2016-02-27
    • 2014-12-24
    • 2019-04-18
    • 1970-01-01
    • 2017-11-13
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多