修改理由:

first

此投稿已在 4年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
1 
 1## 模板继承
 2
 3### 定义布局
 4
 5Blade 的两个主要优点是`模板继承`和`区块`。为方便入门,让我们先通过一个简单的例子来上手。首先,我们来研究一个「主」页面布局。因为大多数 web 应用会在不同的页面中使用相同的布局方式,因此可以很方便地定义单个 Blade 布局视图:
 6
 7```
 8<!-- 保存在 resources/views/layouts/app.blade.php 文件中 -->
 9
 10<html>
 11   <head>
 12       <title>App Name - @yield('title')</title>
 13   </head>
 14   <body>
 15       @section('sidebar')
 16           This is the master sidebar.
 17       @show
 18
 19       <div class="container">
 20           @yield('content')
 21       </div>
 22   </body>
 23</html>
 24```
 25
 26如你所见,该文件包含了典型的 HTML 语法。不过,请注意 `@section` 和 `@yield` 指令。 `@section` 指令定义了视图的一部分内容,而 `@yield` 指令是用来显示指定部分的内容。
 27
 28现在,我们已经定义好了这个应用程序的布局,接下来,我们定义一个继承此布局的子页面。
 29
 30### 扩展布局
 31
 32在定义一个子视图时,使用 Blade 的 `@extends` 指令指定子视图要「继承」的视图。扩展自 Blade 布局的视图可以使用 `@section` 指令向布局片段注入内容。就如前面的示例中所示,这些片段的内容将由布局中的显示在布局中 `@yield` 指令控制显示:
 33
 34```
 35<!-- 保存在 resources/views/child.blade.php 中 -->
 36
 37@extends('layouts.app')
 38
 39@section('title', 'Page Title')
 40
 41@section('sidebar')
 42   @parent
 43
 44   <p>This is appended to the master sidebar.</p>
 45@endsection
 46
 47@section('content')
 48   <p>This is my body content.</p>
 49@endsection
 50```
 51
 52在这个示例中, `sidebar` 片段利用 `@parent` 指令向布局的 sidebar 追加(而非覆盖)内容。 在渲染视图时,`@parent` 指令将被布局中的内容替换。
 53
 54> 和上一个示例相反,这里的 `sidebar` 片段使用 `@endsection` 代替 `@show` 来结尾。 `@endsection` 指令仅定义了一个片段, `@show` 则在定义的同时 **立即 yield** 这个片段。
 55
 56Blade 视图可以使用全局 `view` 助手自路由中返回:
 57
 58```
 59Route::get('blade', function () {
 60   return view('child');
 61});
 62```