拉拉维尔@extends和@include

2022-08-30 15:10:53

我正在使用Laravel进行这个项目。

根据我正在观看的本教程,我不得不在主视图的顶部添加此代码。

 @extends('layouts.masters.main')

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

   @include('layouts.masters.main')

我尝试了一下,它基本上做了同样的事情。唯一的问题是我知道包含如何工作,但我真的不知道扩展做什么。有没有区别,所以是的,它是什么。为什么教程家伙去而不是@extends@include.


答案 1

@include就像一个基本的PHP包含一样,它包括一个“部分”视图到你的视图中。

@extends允许您“扩展”模板,该模板定义自己的部分等。您可以扩展的模板将使用 定义自己的部分,然后您可以将自己的内容放入视图文件中。@yield

例:

模板.边栏选项卡.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>

现在,您可以创建另一个视图,该视图扩展了相同的模板,但提供了自己的部分。

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


答案 2

@include不提供使用@extend扩展布局模板的结构框架。从另一个文件插入部分。@include

扩展边栏选项卡模板可为布局模板中定义的视图提供结构。例如,布局:

布局/布局。边栏选项卡.php

<!DOCTYPE html><html lang="en">
<head>  <meta charset="UTF-8" /><title>DOCUMENT</title></head>
  <body>
    @yield('header')
    @yield('content_1')
    @yield('content_2')
    @yield('content_3')
    @yield('footer')
  </body>
</html>

与风景

show.blade.php

@extends('layouts.layout')

@section('content_1')
    <h2>Content1 Puppy Dog</h2>
@endsection

@section('footer')
    <h1>I wanna be at the bottom</h1>
@endsection

@section ('content_3')
    <h2>Content3 Horsie</h2>
@endsection

@section ('content_2')
    <h2>Content2 Kitty Cat</h2>
@endsection

@section('header')
    <h1>I wanna be at the top</h1>
@endsection

给出输出:

<body>
<h1>I wanna be at the top</h1>
<h2>Content1 Puppy Dog</h2>
<h2>Content2 Kitty Cat</h2>
<h2>Content3 Horsie</h2>
<h1>I wanna be at the bottom</h1>
</body>

推荐