# 使用 Blade 模板
> Blade 是構建 Laravel 應用所創建的一套模板引擎,眾所周知,Laravel 的開發以優雅為名, 我們現在將使用 Blade 進行 ThinkPHP 視圖頁面的優雅開發。
你可以在 Laravel 中文文檔: https://laravel-china.org/docs/laravel/5.7/blade/ 查看詳細的語法解釋
## 安裝 Blade
請按下 Ctrl+Shift+` (請確保在網站根目錄 thinkphp.test) 并切換到終端 , 并鍵入命令:
`composer require luoyy/think-blade`
進入 `config/template` , 將 return 里的內容進行替換:
~~~~ config
// 模板引擎類型
'type' => 'Blade',
// 視圖基礎目錄(集中式)
'view_base' => '',
// 模板起始路徑
'view_path' => '',
// 模板文件名分隔符
'view_depr' => DIRECTORY_SEPARATOR,
// 模板文件后綴
'view_suffix' => 'blade.php',
'cache' => [
'cache_subdir' => false,
'prefix' => '',
],
'tpl_replace_string' => [],
~~~~
進入到上一章所編寫的視圖層目錄 `application/welcome/view`,將所有 `.html` 后綴修改為 `.blade.php`
## 測試 blade
打開視圖層的 `application/welcome/view/index/home.blade.php` 并刪除全部內容,鍵入 {{ time() }}
進入 `http://thinkphp.test` 若出現 一長串 時間戳,則表示 Blade 模板安裝成功.
## 重寫視圖
>請刪除所有視圖頁面的內容
在 `/public/static` 下增加 `/css/app.css`, `/js/app.js`, 并更改 `default.blade.php`
~~~~ blade
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="">
<meta name="keywords" content="">
<title>@yield('title') -- ThinkPHP 入門教程</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<link rel="stylesheet" href="/static/css/app.css">
</head>
<body>
<header>
<div>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="#">ThinkPHP 入門教程</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">主頁
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">幫助</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">關于</a>
</li>
</ul>
<a class="btn btn-outline-success my-2 my-sm-0" href="#">注冊</a>
</div>
</div>
</nav>
</div>
</header>
<div class="container">
@yield('content')
</div>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdn.bootcss.com/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
<script src="/static/js/app.js"></script>
</body>
</html>
~~~~
看到代碼頂部的 `@yield('title')` 指令是用來顯示指定部分的內容.
同樣的,我們在模板繼承 `default.blade.php` 之后,只需要使用 `@section('title)` 即可繼承并使用.
找到視圖路徑 `view/index`, 將下面的模板文件統一加上代碼:
~~~~ blade
@extends('_layout.default')
// 對應繼承路徑:_layout/default.blade.php
~~~~
`@extends` 指繼承整個模板文件,而在 `Blade` 中,我們不再使用 `/` 來分割路徑,而是使用 `.`
接著,打開 `home.blade.php`, 我們添加一些歡迎界面.
~~~~ blade
@extends('_layout.default')
@section('title', '主頁')
@section('content')
<section class="jumbotron text-center">
<div class="container">
<h1 class="jumbotron-heading">歡迎你,我的朋友</h1>
</div>
</section>
@stop
~~~~
訪問 `http://thinkphp.test`, 一個全新的歡迎頁面呈現在眼前.
- 第一章. 基礎信息
- 1.1 序言
- 1.2 關于作者
- 1.3 本書源碼
- 1.4 反饋糾錯
- 1.5 安全指南
- 1.6 捐助作者
- 第二章. 開發環境布置
- 2.1 編輯器選用
- 2.2 命令行工具
- 2.3 開發環境搭建
- 2.4 瀏覽器選擇
- 2.5 第一個應用
- 2.6 Git 工作流
- 第三章. 構建頁面
- 3.1 章節說明
- 3.2 靜態頁面
- 3.3 Think 命令
- 3.4 小結
- 第四章. 優化頁面
- 4.1 章節說明
- 4.2 樣式美化
- 4.3 局部視圖
- 4.4 路由鏈接
- 4.5 用戶注冊頁面
- 4.6 集中視圖
- 4.7 小結
- 第五章. 用戶模型
- 5.1 章節說明
- 5.2 數據庫遷移
- 5.3 查看數據表
- 5.4 模型文件
- 5.5 小結
- 第六章. 用戶注冊
- 6.1 章節說明
- 6.2 注冊表單
- 6.3 用戶數據驗證
- 6.4 注冊失敗錯誤信息
- 6.5 注冊成功
- 6.6 小結
- 第七章. 會話管理
- 7.1 章節說明
- 7.2 會話
- 7.3 用戶登錄
- 7.4 退出
- 7.5 小結
- 第八章. 用戶 CRUD
- 8.1 章節說明
- 8.2 重構代碼
- 8.3 更新用戶
- 8.4 權限系統
- 8.5 列出所有用戶
- 8.6 刪除用戶
- 8.7 訪客模式
- 8.8 優化前端
- 8.9 小結
- 第九章. 微博 CRUD
- 9.1 章節說明
- 9.2 微博模型
- 9.3 顯示微博
- 9.4 發布微博
- 9.5 微博數據流
- 9.6 刪除微博
- 9.7 小結