1、简介
Blade是Laravel提供的简单而强大的模板引擎。与控制器布局不同,Blade由模板继承和部分驱动。所有Blade模板都应该使用扩展名.blade.php
。 文件扩展并存放在 resources/views
目录下。
2、模板继承
定义布局
使用 Blade 的两个最大优点是模板继承和切片,开始之前让我们先看一个例子。首先,我们检测一个“主”页面布局,由于大多数 Web 应用在不同页面中使用同一个布局,可以很方便的将这个布局定义为一个单独的 Blade 页面:
<!-- 存放在 resources/views/layouts/master.blade.php --> <html> <head> <title>App Name - @yield('title')</title> </head> <body> @section('sidebar') This is the master sidebar. @show <div class="container"> @yield('content') </div> </body> </html>
正如你所看到的,该文件包含典型的 HTML 标记,然而,注意 @section
和 @yield
指令,前者正如其名字所暗示的,定义了一个内容的片段,而后者用于显示给定片段的内容。
现在我们已经为应用定义了一个布局,接下来让我们定义继承该布局的子页面吧。
扩展布局
定义子页面的时候,可以使用 Blade 的 @extends
指令来指定子页面所继承的布局,继承一个 Blade 布局的视图将会使用 @section
指令注入内容到布局的片段中,记住,如上面例子所示,这些片段的内容将会显示在布局中使用@yield
的地方:
<!-- 存放在 resources/views/child.blade.php --> @extends('layouts.master') @section('title', 'Page Title') @section('sidebar') @parent <p>This is appended to the master sidebar.</p> @endsection @section('content') <p>This is my body content.</p> @endsection
在本例中,sidebar
片段使用 @parent
指令来追加(而非覆盖)内容到布局中 sidebar
,@parent
指令在视图渲染时将会被布局中的内容替换。
当然,和原生 PHP 视图一样,Blade 视图可以通过 view
方法直接从路由中返回:
Route::get('blade', function () { return view('child'); });