Laravel自帶的Blade模板很強大也很方便javascript
咱們使用模板通常除了傳遞變量之外還有一個重要的用途就是嵌套php
經過嵌套咱們能夠把公共的部分單獨拉出來,在須要的地方引入避免重複勞動css
根據官方文檔咱們能夠知道模板經常使用命令有下面這幾個html
@section 定義java
@yield 展現jquery
@extends 繼承框架
@include 引入less
另外@iF @else @while @unlesss等控制相關這裏就不贅述了佈局
這裏舉個實際的例子post
好比咱們 有三個頁面,首頁,列表頁和詳情頁,分別是index,list,detail
在這三個頁面中須要共同使用的部分有 頁面的外圍template,導航欄部分head
其中template用來放整個頁面的框架佈局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>測試</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta content="" name="description" /> <meta content="" name="author" /> <meta name="csrf-token" content="{{ csrf_token() }}" /> <link rel='stylesheet' id='_common-css' href='/css/common.css?ver=11.1' type='text/css' media='all' /> <script type='text/javascript' src='/js/jquery.min.js'></script> </head> <body> <section class="container"> @yield('head') @yield('content') </section> </body> </html>
咱們在定義了主體容器container的同時,用@yield命令告訴模板咱們要在這裏放哪些section
這裏咱們雖然定義了templade做爲總體佈局,可是咱們在控制器裏並不能把view指向template而是要指向到具體的頁面
好比首頁
return view('index');
index模板頁面以下
@extends('layouts.template') @extends('layouts.head') @section('content') 這裏是頁面的實際內容 @stop
index頁面作了什麼呢?
首先它把全部須要用的模板引入了進來,包括template和head
而後它有定義了一個叫content的section。
head模板頁面以下
@section('head') <header class="header"> <div class="container"> <ul> <li>菜單1</li> <li>菜單2</li> <li>菜單3</li> <ul> </div> </header> @stop
至此,一套基本可用的模板就搭建好了。
目錄結構是這樣的
resources/ views/ index.blade.php list.blade.php detail.blade.php layouts/ template.blade.php head.blade.php
流程是這樣的
Controller指向模板index.blade.php
index模板引入template模板和head模板,並定義content section
template模板展現自身內容並展現對應的section內容
其中index負責引入全部模板,template負責總體結構和展現,index和head模板負責定義section裏面的內容
還有一種比較特殊的需求是須要在默寫特定的section 裏面引入一小塊公共模板
好比有些頁面的右側能夠放個熱門列表
這時候咱們能夠在layouts裏面價格模板right.blade.php
內容以下
<div class="widget widget_ui_viewposts"> <h3 class="title"><strong>熱門閱讀</strong></h3> <ul> <li>文章1</li> <li>文章2</li> <li>文章3</li> </ul> </div>
必定要注意不要定義section
而後在須要引用的地方用@include
這個方法不管是section裏面仍是外面均可以直接用的