为什么Laravel刀片模板同时具有@yield和@extend指令?

时间:2018-06-16 21:47:03

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

我不明白为什么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语句在主布局中使用“wrap me”来使用子组件。

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

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

1 个答案:

答案 0 :(得分:0)

好吧,@extends仅用于说 - 使用此模板作为基础模型,@yield说 - 在这里你应该把部分的内容放在给定的名字上。

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

的内容