Laravel @extends 和 @include

laravel

1个回答

写回答

hdwooree

2025-12-10 21:41

+ 关注

Laravel
Laravel

Laravel的 @extends 和 @include 是在Blade模板引擎中常用的两个指令。@extends 指令用于扩展(继承)一个父模板,而 @include 指令用于引入其他视图模板。这两个指令在Laravel中的应用非常广泛,能够帮助开发者更好地组织和重用视图代码。

Laravel中,@extends 指令可以让我们创建一个父模板,然后在子模板中通过继承父模板的方式来重用父模板的代码。通过这种方式,我们可以将一些通用的布局、样式和脚本代码抽取出来,放在父模板中,然后在各个子模板中继承父模板,只需关注子模板自身的内容即可。

下面是一个简单的示例,假设我们有一个父模板 master.blade.php,它定义了网页的基本布局、导航栏、页脚等内容:

blade

<!DOCTYPE html>

<html>

<head>

<title>My Website</title>

</head>

<body>

<header>

<h1>Welcome to My Website</h1>

</header>

<nav>

<ul>

<li>Home</li>

<li>About</li>

<li>Contact</li>

</ul>

</nav>

<div class="content">

@yield('content')

</div>

<footer>

© 2022 My Website. All rights reserved.

</footer>

</body>

</html>

然后,我们可以在子模板中使用 @extends 指令继承父模板,并通过 @section 指令定义子模板自己的内容:

blade

@extends('master')

@section('content')

<h2>About Us</h2>

We are a leading company in the industry.

@endsection

在上面的示例中,子模板 about.blade.php 继承了父模板 master.blade.php,并通过 @section('content') 指令定义了自己的内容。当渲染 about.blade.php 视图时,父模板中的 @yield('content') 将会被子模板中的内容替换,从而形成最终的网页。

除了使用 @extends 进行模板继承外,我们还可以使用 @include 指令引入其他视图模板。@include 指令可以在当前视图中嵌入其他视图,从而实现代码的重用和模块化。

下面是一个示例,假设我们有一个导航栏的视图模板 naVBAr.blade.php,它定义了网页的导航栏内容:

blade

<nav>

<ul>

<li>Home</li>

<li>About</li>

<li>Contact</li>

</ul>

</nav>

然后,我们可以在其他视图中使用 @include 指令引入导航栏视图模板:

blade

<!DOCTYPE html>

<html>

<head>

<title>My Website</title>

</head>

<body>

@include('naVBAr')

<div class="content">

<h2>Welcome to My Website</h2>

<img src="https://img.izhida.com/topic/e1bfd762321e409cee4ac0b6e841963c.jpg" alt="php"><br>php

This is the homepage.

</div>

<footer>

© 2022 My Website. All rights reserved.

</footer>

</body>

</html>

在上面的示例中,我们在视图模板中使用 @include('naVBAr') 将导航栏视图模板嵌入其中,从而实现了导航栏的重用。

通过 @extends 和 @include 指令,Laravel的Blade模板引擎提供了强大的视图组织和重用功能。通过模板继承,我们可以将通用的布局和代码放在父模板中,然后在子模板中定义自己的内容,实现代码的重用和模块化。而通过模板引入,我们可以在一个视图中引入其他视图,实现代码的重用和模块化。

Laravel的 @extends 和 @include 是Blade模板引擎中常用的指令,能够帮助开发者更好地组织和重用视图代码。通过 @extends 指令,我们可以创建一个父模板,并在子模板中继承父模板的代码,实现代码的重用和模块化。而通过 @include 指令,我们可以在一个视图中引入其他视图,实现代码的重用和模块化。这些功能使得视图开发更加灵活和高效。

示例代码:

blade

<!-- master.blade.php -->

<!DOCTYPE html>

<html>

<head>

<title>My Website</title>

</head>

<body>

<header>

<h1>Welcome to My Website</h1>

</header>

<nav>

<ul>

<li>Home</li>

<li>About</li>

<li>Contact</li>

</ul>

</nav>

<div class="content">

@yield('content')

</div>

<footer>

© 2022 My Website. All rights reserved.

</footer>

</body>

</html>

<!-- about.blade.php -->

@extends('master')

@section('content')

<h2>About Us</h2>

We are a leading company in the industry.

@endsection

<!-- naVBAr.blade.php -->

<nav>

<ul>

<li>Home</li>

<li>About</li>

<li>Contact</li>

</ul>

</nav>

<!-- homepage.blade.php -->

<!DOCTYPE html>

<html>

<head>

<title>My Website</title>

</head>

<body>

@include('naVBAr')

<div class="content">

<h2>Welcome to My Website</h2>

This is the homepage.

</div>

<footer>

© 2022 My Website. All rights reserved.

</footer>

</body>

</html>

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号