php - Laravel @extends 和 @include

标签 php laravel

我正在使用 Laravel 开发这个项目。

根据我正在观看的教程,我必须在主视图的顶部添加这段代码。

 @extends('layouts.masters.main')

由于我是 Laravel 的新手,这让我想知道为什么我不能简单地使用它。

   @include('layouts.masters.main')

我试了一下,它基本上做了同样的事情。唯一的问题是我确实知道 include 是如何工作的,但我真的不知道 extends 是做什么的。 有区别吗,是的,那是什么。为什么辅导员选择 @extends 而不是 @include.

最佳答案

@include 就像一个基本的 PHP 包含,它包含一个“部分” View 到您的 View 中。

@extends 让你“扩展”一个模板,它定义了它自己的部分等。你可以扩展的模板将使用 @yield 定义它自己的部分,这然后你可以把你自己的东西放到你的 View 文件中。

例子:

template.blade.php

<html>
    <body>
        @yield('header')
        @yield('content')
        @yield('footer')
    </body>
</html>

view-one.blade.php

@extends('template')

@section('header')
    View one's header
@endsection

@section('content')
    View one's content
@endsection

@section('footer')
    View one's footer
@endsection

这将导致:

<html>
    <body>
        View one's header
        View one's content
        View one's footer
    </body>
</html>

现在您可以创建另一个 View 来扩展同一模板,但提供自己的部分。

使用@extend 的另一个好处是继承。您可以提供一个基本模板,然后是另一个扩展该模板的子模板,该子模板随后会产生自己的部分。然后您可以扩展该子模板。

关于php - Laravel @extends 和 @include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39749683/

相关文章:

Laravel 5.8 Nova 登录测试 session 缺少预期的 key [错误]

PHP、HTML、Javascript执行顺序

PHP 在带有尖括号的 Echo 上丢失字符

php - Laravel 仅考虑请求中的必需列,并忽略任何其他键值(如果存在)

php - Composer : prevent updating packages that require higher PHP version

unit-testing - Laravel 单元测试延迟

php - 通过类型提示将服务提供者注入(inject)到中间件中

php - 如何在 woocommerce 结帐中设置默认值

php - Twig - 打印没有空值的数组

php - 按不按日期顺序返回结果进行分组