# 11. 使用 @include 來整理 view
上一篇 [Ruby 程序員學習 laravel 框架筆記 (10)-blade layout](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-10-blade) 有講到關于 layout 的知識,這一篇是對上一篇的細化,對上面的代碼進行優化整理。
而使用的 view 的指令是 `@include`。
回到 `resources/views/layouts` 目錄,找到 layout 文件 `master.blade.php`,它的內容我現在就不全列出來了,因為實在太長了,只列出 `body` 標簽的內容,如下:
```
...
<body>
<div class="container">
<div class="header clearfix">
<nav>
<ul class="nav nav-pills float-right">
<li class="nav-item">
<a class="nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</nav>
<h3 class="text-muted">Project name</h3>
</div>
@yield('body')
<footer class="footer">
<p>? Company 2017</p>
</footer>
</div> <!-- /container -->
</body>
...
```
現在我們要把這段代碼整理一下。
下面請睜大你的眼睛看清楚,以 `@yield('body')` 這條指令為分割線,分別以它上面和下面的內容抽成兩個文件,也就是說 `class` 等于 `header` 這個 div 部分抽成 `menu.blade.php` 文件,而 `footer` 這個標簽部分抽成 `footer.blade.php`,這兩個文件都放到 `resources/views/layouts` 目錄下。
目錄結構如下:
```
resources/views/layouts
├── app.blade.php
├── footer.blade.php
├── master.blade.php
└── menu.blade.php
```
最后
`resources/views/layouts/menu.blade.php` 的內容如下:
```
// resources/views/layouts/menu.blade.php
<div class="header clearfix">
<nav>
<ul class="nav nav-pills float-right">
<li class="nav-item">
<a class="nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</nav>
<h3 class="text-muted">Project name</h3>
</div>
```
而 `resources/views/layouts/footer.blade.php` 的內容如下:
```
// resources/views/layouts/footer.blade.php
<footer class="footer">
<p>? Company {{ date('Y') }}</p>
</footer>
```
而在 `master` layout 如何引用這兩個文件呢,很簡單,就是使用 `@include` 指令。
最終 `master.blade.php` 的 body 部分的內容會如下面這樣:
```
...
<body>
<div class="container">
@include('layouts.menu')
@yield('body')
@include('layouts.footer')
</div> <!-- /container -->
</body>
...
```
效果是一樣,但是代碼文件被很好地整理了起來,看著也舒服。
完結。
下一篇:[Ruby 程序員學習 laravel 框架筆記 (12)-Blade if/else/unless/or](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-12-blade)
- 0. 介紹
- 1. php 開發環境安裝
- 2. 跑 laravel 的 hello world
- 3. 第一個路由 UsersController
- 4. 在數據庫中創建一條數據
- 5. 簡單的用戶認證
- 6. 修改 User model
- 7. User model 的 getter 方法
- 8. view 的更多知識
- 9. 在 view 中共享變量
- 10. blade layout
- 11. 使用 @include 來整理 view
- 12. Blade if/else/unless/or
- 13. factories, faker and seeding
- 14. Blade foreach
- 15. 分頁
- 16. 用中間件來限制用戶必須登錄
- 17. Route group
- 18. CURD 實踐之改變用戶表結構
- 19. CURD 實踐之為新添加的屬性修改注冊功能
- 20. CURD 實踐之用 username 來代替 email 登錄
- 21. CURD 個人中心頁面
- VIM 的 laravel 插件
- VIM 中有效地查看 php 源碼