Blade 是 Laravel 所提供的一個簡單且強大的模板引擎。相較於其它知名的 PHP 模板引擎,Blade 並不會限制說你必須得在視圖中使用 PHP 代碼。全部 Blade 視圖都會被編譯緩存成普通的 PHP 代碼,一直到它們被更改成止。這表明 Blade 基本不會對你的應用程序生成負擔。Blade 視圖文件使用 .blade.php
作爲擴展名,一般保存於 resources/views
文件夾內。php
# 定義頁面佈局css
使用 Blade 模板的兩個主要優勢爲 模板繼承 與 區塊。讓咱們先經過一個簡單的例子來上手。首先,咱們須要確認一下「主要的」頁面佈局。大多數的網頁應用程序在不一樣頁面都保持着相同的佈局方式,這種佈局在這單個 Blade 視圖中能夠很方便的定義:html
咱們先構建一個基礎頁面模版,由於後面的每一個頁面都是須要繼承它的.建立 master.blade.php文件.jquery
<!-- 文件保存於 resources/views/master.blade.php --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> @yield('title') </title> <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css"> </head> <body> <nav class="navbar navbar-default"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle Navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @if(Auth::guest()) <a class="navbar-brand" href="/">學生成績管理</a> @else @if (Auth::user()->is_admin) <a class="navbar-brand" href="/admin">學生成績管理</a> @else <a class="navbar-brand" href="/">學生成績管理</a> @endif @endif </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="http://www.golaravel.com" target="__blank">Power by laravel5</a></li> </ul> <ul class="nav navbar-nav navbar-right"> @if (Auth::guest()) @else <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <li><a href="{{ url('/logout') }}">退出</a></li> </ul> </li> @endif </ul> </div> </div> </nav> <!-- <div> {{-- <!-- @include('flash') --}} </div> --> @yield('content') <!-- script --> <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <script src="http://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> </body> </html>
如你所見,這個文件包含了傳統的 HTML 語法。不過,請注意 @section
與 @yield
命令。正如其名,@section
命令定義一個內容區塊,而 @yield
命令被用來 「顯示指定區塊」 的內容。laravel
@yield()[能夠簡單地理解爲區域】 和 @extends() 一般會結合者使用,實現咱們一般所說的layouts佈局。layouts佈局就是在web開發的過程當中,咱們將一些公用的部分如 header , footer等直接放在一個視圖文件中,而後在使用的使用直接繼承 (使用@extends) 就能夠了,好比咱們在 resources/views/ 文件夾之下建立一個 master.blade.php :web
如今,咱們已經定義好了這個應用程序的佈局,讓咱們接着來定義一個繼承此佈局的子頁面。bootstrap
#繼承頁面佈局
瀏覽器
當正在定義子頁面時,你能夠使用 Blade 的 @extends
命令指定子頁面應該「繼承」哪個佈局。當視圖 @extends
Blade 的佈局以後,便可使用 @section
命令將內容注入於佈局的區塊中。切記,如上述例子所見,這些區塊的內容都會使用@yield
顯示在佈局中:緩存
welcome歡迎首頁面繼承主頁面app
<!-- 文件保存於 resources/views/welcome.blade.php --> @extends('master') {{-- 繼承master模版,注意:此處米有結束符分號 --}} @section('title') {{-- 對應@yield('title') --}} {{-- 也能夠這樣寫:@section('title', '頁面標題') --}} 學生成績管理系統-測試- @stop @section('content') {{-- 對應@yield('content') --}} <div class="container"> <div class="jumbotron"> <h2><div class="quote">{{ Inspiring::quote() }}</div></h2> <p>同窗們登陸後先修改相關資料</p> <p>查詢分數,有疑問諮詢管理員</p> <p><a class="btn btn-primary btn-lg" href="/login" role="button">點擊登陸</a></p> </div> </div> @stop
@section 有兩種寫法:
第一種當內容比較短時能夠直接寫,結尾不用@stop結束符
@section('title', '頁面標題')
第二種當顯示內容比較多時,能夠分開來寫,即下面這種:
@section('content') // 這部分替換app裏的代碼,有開始就會有結束,因此一個section 對應一個stop <h1>生如夏花之絢爛</h1> <p>死如秋葉之靜美</p> @stop
瀏覽器端顯示: