1. 程式人生 > 程式設計 >Laravel 5.1 框架Blade模板引擎用法例項分析

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程式設計有所幫助。