Laravel實現(xiàn)通過blade模板引擎渲染視圖
laravel提供了blade模板引擎用于視圖的渲染,在blade中可以直接使用PHP代碼,并且blade最終也會被編譯為php緩存起來,只有在blade文件被修改后才會重新編譯,這一點可以節(jié)省開銷提高應(yīng)用性能。blade文件.blade.php作為視圖文件存放于laravel的resource/views目錄下。
1、定義模板
blade定義模板頁面同創(chuàng)建html頁面一樣,只不過在適當?shù)奈恢猛ㄟ^@section或@yield來占位,當其它頁面引用模板頁時將內(nèi)容填充到占位的位置即可
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
<header class="header">
@section('header')
這是頭部<br>
@show
</header>
<div class="middle">
<aside class="aside">
這是側(cè)邊欄
@yield('aside')
</aside>
<div class="content">
@section('content')
這是主體內(nèi)容
@show
</div>
</div>
<footer class="footer">
這是底部
@yield('footer')
</footer>
</body>
</html>
section與yield都是占位符,其區(qū)別體現(xiàn)在引用模板時,當使用yield時會完全將指定的占位符替換掉,而使用section時可以通過@parent來保留@section()~@show之間的內(nèi)容。
如果需要在blade中引入外部js、css文件可以采用相對public目錄的絕對路徑,例如引入自帶的bootstrap,位于public/css/app.css,可以<link rel="stylesheet" href="{{ asset('./css/app.css')}}" rel="external nofollow" >
2、引用模板
引用模板首先需要通過@extends()引入你需要使用的模板,模板位置相對于views目錄。然后通過@section()~@stop(注意與定義模板時的@section~@show區(qū)別),將你所需要替換的內(nèi)容填充到模板的指定位置,例如要填充header對應(yīng)的section:
@extends('template.layout') {{--引入模板views/template/layout.blade.php--}}
@section('title')
登錄界面
@stop
@section('header') {{--填充到header對應(yīng)的占位符--}}
@parent {{--保留模板原內(nèi)容--}}
頭部替換內(nèi)容
@stop
引入組件:通過@component來引入組件模板。比如定義了一個通用的錯誤提示組件alert:
<div style="color: #ff5b5d;">
<h5>{{$title}}</h5>
{{$slot}}
</div>
在頁面中使用該組件:
@component('template.alert') {{--引入組件views/template/alert.blade.php--}}
@slot('title') {{--指定替代組件中的$title位置--}}
alert標題
@endslot
alert組件內(nèi)容
@endcomponent
@component~@endcomponent之間的內(nèi)容會自動替代組件{{$slot}},如果要指定替代的位置,可以通過@slot()~@endslot
引入子視圖:在一個頁面中如果希望引入一個blade子視圖,可以通過@include()
@include('template.child')
在blade中輸出變量通過{{$var}},其中的語句已經(jīng)經(jīng)過 PHP 的 htmlentities 函數(shù)處理以避免 XSS 攻擊。例如在controller中引入view時傳入變量參數(shù):
public static function showBlade(){
return view('Login.login',['var'=>'test']);
}
在blade中使用該變量
變量為:{{isset($var)? $var : '默認值'}}
有時候我們希望blade不要對文本進行解析,原樣輸出,比如在vue中也使用{{}}包裹變量,我們不希望blade對其進行編譯,這時可以使用@:
原文本輸出:@{{ $var }}
3、流程控制
blade提供了一套流程控制語句來對頁面的渲染進行控制,使頁面的渲染更為快捷,并且這些控制語句都是和PHP非常類似的。
if判斷:
@if ($val >80) 優(yōu)秀 @elseif ($val>60) 及格 @else 不及格 @endif
循環(huán):
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
switch分支:
@switch($i) @case(1) First case... @break @case(2) Second case... @break @default Default case... @endswitch
認證:@auth 和 @guest 指令可用于快速判斷當前用戶是否登錄:
@auth // 用戶已登錄... @endauth @guest // 用戶未登錄... @endguest
以上這篇Laravel實現(xiàn)通過blade模板引擎渲染視圖就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Laravel 5.1 框架Blade模板引擎用法實例分析
- Laravel中的Blade模板引擎示例詳解
- Laravel模板引擎Blade中section的一些標簽的區(qū)別介紹
- Laravel 5框架學(xué)習之Blade 簡介
- Laravel框架中Blade模板的用法示例
- Laravel框架之blade模板新手入門教程及小技巧
- 解決Laravel blade模板轉(zhuǎn)義html標簽的問題
- 在Laravel 的 Blade 模版中實現(xiàn)定義變量
- Laravel 實現(xiàn)在Blade模版中使用全局變量代替路徑的例子
- laravel框架實現(xiàn)為 Blade 模板引擎添加新文件擴展名操作示例
相關(guān)文章
yii框架數(shù)據(jù)庫關(guān)聯(lián)查詢操作示例
這篇文章主要介紹了yii框架數(shù)據(jù)庫關(guān)聯(lián)查詢操作,結(jié)合實例形式總結(jié)分析了yii數(shù)據(jù)庫關(guān)聯(lián)查詢的常見操作方法與使用注意事項,需要的朋友可以參考下2019-10-10
php float不四舍五入截取浮點型字符串方法總結(jié)
在php中截取浮點型大致有以下幾種方法。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
PHP如何通過傳引用的思想實現(xiàn)無限分類(代碼簡單)
本文給大家介紹php引用傳遞,如何通過引用出的思想實現(xiàn)無限分類,代碼超簡單,需要的朋友可以借鑒下2015-10-10

