Laravel 5.1 框架Blade模板引擎用法例項分析
本文例項講述了Laravel 5.1 框架Blade模板引擎用法。分享給大家供大家參考,具體如下:
為什麼要使用blade 它是幹什麼用的?
blade模板引擎使我們寫HTML頁面的地方,使用它是因為它能給我們提供很多的遍歷,減少程式碼的重複率 提高開發效率。我們寫blade的路徑是 resources/view 下,它的檔名字尾是blade.php。
1 繼承
繼承是相當爽的,它可以從主模板繼承所有程式碼,以免大量的程式碼重複。這樣說比較片面,具體看眼程式碼吧。
1.1 模板繼承拓展 程式碼片段
首先先建立一個 admin/layout.blade.php:
<!DOCTYPE html> <html> <head> <title>Learn Laravel-- @yield('title')</title> </head> <body> @section('navibar') The master navigation bar @show <div class="container"> @yield('content') </div> </body> </html>
然後建立 admin/home.blade.php 繼承自layout:
@extends('admin.layout') @section('title') Home @endsection @section('navibar') @parent <p>增加別的程式碼 不是完全覆蓋</p> @endsection @section('content') <p>Content body</p> @endsection
註冊路由 實現控制器方法並展示
Route::group(['prefix' => 'admin','namespace' => 'Admin'],function (){ Route::resource('/','HomeController'); }); public function index() { return view('admin.home'); }
總結: 好了 現在咱先看layout程式碼 它初始定義了一個HTML簡單的模板,在需要拓展的地方都加上了@yield關鍵字 這代表可填充的一塊兒程式碼片段區域,而@section(navi)是聲明瞭一段片段 然後通過@show來展示。
然後我們建立了home檔案,它可以繼承自layout 通過@extends() 繼承之後就可以使用@section填充layout中的@yield的了,一個yield對應著一個section,關於layout中的@section(navi) 在home中也進行了補充 因為使用了@parent關鍵字,代表著不覆蓋父模板的程式碼片段 而是在父模板的程式碼片段最後追加程式碼,當然啦 如果你要是去掉@parent關鍵字就會覆蓋掉。
如果這麼說你還是不明白的話,開啟編譯器敲一遍 看看結果就清楚了。
1.2 引入一段程式碼
這也是blade相當強大的地方 當你寫了一段HTML之後呢 發現其中有些內容在別的頁面下重用率很高,你完全可以把它抽出來放在另一個blade中,然後每當你要使用這段程式碼時使用@include引入就行了。
首先我們先來建立一個 some.blade.php(至於放在哪裡隨你便) :
<p>這只是一個演示 所以不浪費時間寫太多的HTML</p>
然後在home中引用它吧:
@extends('admin.layout') @section('title') Home @endsection @section('navibar') @parent <p>增加別的程式碼 不是完全覆蓋</p> @endsection @section('content') @include('admin.some') <p>Content body</p> @endsection
2 資料展示
這段說說如何將資料傳入到一個檢視 然後將它展示到頁面上。
2.1 資料傳入
資料傳入有兩種種方法 先說第一種 陣列方式:
public function index() { $name = 'K'; return view('admin.home',compact('name')); // 也可以這麼寫 // return view('admin.home',['name' => $name]); }
第二種方法是with方法:
public function index() { $name = 'K'; return view('admin.home')->with('name',$name); }
2.2 展示資料
第一種展示方法 {{ }},用雙花括號括起來就可以展示傳入blade模板的變數,在{{ }} 裡是可以使用PHP程式碼的:
<p>使用者:{{ $name }}</p>
第二種展示方法{!! !!},它是不經過htmlentities函式處理的,所以說你傳遞的資料是html資料的話 可以使用這種方法:
return view('admin.home')->with('name','<h1>K</h1>'); <p>使用者:{!! $name !!}</p>
3 控制語句
blade模板為了最大化使程式碼簡潔呢 它本身自帶了很多控制語句 這跟咱學的PHP很類似,就是if啊 foreach啊什麼的
3.1 if控制 - 如果
廢話不多說 例項放這你就能懂:
@if(isset($name)) <p>{{ $name }}</p> @else <p>None</p> @endif
3.2 unless控制 - 除非
@unless(!isset($name)) <p>{{ $name }}</p> @endunless
3.3 for控制 - 迴圈
@for ($i = 0; $i < 10; $i++) <p>{{ $i }}</p> @endfor
3.4 foreach控制 - 迴圈遍歷
{{--$names = ['k','l','i'];--}} @foreach($names as $name) <p>{{ $name }}</p> @endforeach
更多關於Laravel相關內容感興趣的讀者可檢視本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向物件程式設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》
希望本文所述對大家基於Laravel框架的PHP程式設計有所幫助。