📜  Laravel模板继承(1)

📅  最后修改于: 2023-12-03 14:43:51.430000             🧑  作者: Mango

Laravel模板继承

在Laravel中,模板继承是一个非常重要的特性。通过使用模板继承,我们可以避免在每个页面中都重复编写相同的代码。这样可以大大提高代码的可维护性和可扩展性。

基本用法

在Laravel中,使用模板继承非常简单。只需要在需要继承其他模板的模板文件中使用@extends指令即可。比如我们需要在app.blade.php模板中继承layout.blade.php模板:

@extends('layout')

这样,app.blade.php就可以继承layout.blade.php模板。在layout.blade.php中定义的内容就会被继承到app.blade.php中。

定义子模板内容

在子模板中使用@section指令定义模板的内容。比如在app.blade.php中我们可以定义一个content部分:

@section('content')
    <div class="container">
        <h1>这里是内容</h1>
    </div>
@endsection

@section指令中的content就是我们定义的内容块的名称,可以自定义。

在父模板中使用子模板内容

在父模板中可以使用@yield指令渲染子模板中的内容。比如在layout.blade.php中:

<!DOCTYPE html>
<html>
<head>
    <title>Layout</title>
</head>
<body>
    <div class="container">
        @yield('content')
    </div>
</body>
</html>

这样content块中的内容就会被渲染到父模板中。

定义默认内容

有时候子模板中可能没有定义相应的内容块,这时候可以在父模板中使用@section指令来定义默认内容。比如在layout.blade.php中:

<!DOCTYPE html>
<html>
<head>
    <title>Layout</title>
</head>
<body>
    <div class="container">
        @section('content')
            <p>默认内容</p>
        @show
    </div>
</body>
</html>

这样如果子模板中没有定义content块,就会渲染出默认的内容。

继承其他模板

有时候我们可能需要继承多个模板。这时候可以使用@extends指令继承其他模板,然后再使用@section指令定义子模板的内容。比如:

@extends('layout')

@section('content')
    <div class="container">
        <h1>这里是内容</h1>
    </div>
@endsection

@section('sidebar')
    <div class="sidebar">
        <p>这里是侧边栏内容</p>
    </div>
@endsection
总结

模板继承是Laravel中非常重要的一个特性,它可以有效提高代码的可维护性和可扩展性。掌握模板继承的使用方法,可以为我们的开发工作带来很大的便利。