佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖

Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖

熱門標(biāo)簽:科大訊飛語音識(shí)別系統(tǒng) 團(tuán)購網(wǎng)站 電子圍欄 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) Linux服務(wù)器 服務(wù)器配置 阿里云

laravel提供了blade模板引擎用于視圖的渲染,在blade中可以直接使用PHP代碼,并且blade最終也會(huì)被編譯為php緩存起來,只有在blade文件被修改后才會(huì)重新編譯,這一點(diǎn)可以節(jié)省開銷提高應(yīng)用性能。blade文件.blade.php作為視圖文件存放于laravel的resource/views目錄下。

1、定義模板

blade定義模板頁面同創(chuàng)建html頁面一樣,只不過在適當(dāng)?shù)奈恢猛ㄟ^@section或@yield來占位,當(dāng)其它頁面引用模板頁時(shí)將內(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)在引用模板時(shí),當(dāng)使用yield時(shí)會(huì)完全將指定的占位符替換掉,而使用section時(shí)可以通過@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(注意與定義模板時(shí)的@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來引入組件模板。比如定義了一個(gè)通用的錯(cuò)誤提示組件alert:

div style="color: #ff5b5d;">
 h5>{{$title}}/h5>
 {{$slot}}
/div>

在頁面中使用該組件:

@component('template.alert') {{--引入組件views/template/alert.blade.php--}}
 @slot('title')    {{--指定替代組件中的$title位置--}}
  alert標(biāo)題
 @endslot
 alert組件內(nèi)容
@endcomponent

@component~@endcomponent之間的內(nèi)容會(huì)自動(dòng)替代組件{{$slot}},如果要指定替代的位置,可以通過@slot()~@endslot

引入子視圖:在一個(gè)頁面中如果希望引入一個(gè)blade子視圖,可以通過@include()

@include('template.child')

在blade中輸出變量通過{{$var}},其中的語句已經(jīng)經(jīng)過 PHP 的 htmlentities 函數(shù)處理以避免 XSS 攻擊。例如在controller中引入view時(shí)傳入變量參數(shù):

public static function showBlade(){
 return view('Login.login',['var'=>'test']);
}

在blade中使用該變量

變量為:{{isset($var)? $var : '默認(rèn)值'}}

有時(shí)候我們希望blade不要對文本進(jìn)行解析,原樣輸出,比如在vue中也使用{{}}包裹變量,我們不希望blade對其進(jìn)行編譯,這時(shí)可以使用@:

原文本輸出:@{{ $var }}

3、流程控制

blade提供了一套流程控制語句來對頁面的渲染進(jìn)行控制,使頁面的渲染更為快捷,并且這些控制語句都是和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

認(rèn)證:@auth 和 @guest 指令可用于快速判斷當(dāng)前用戶是否登錄:

@auth
 // 用戶已登錄...
@endauth
 
@guest
 // 用戶未登錄...
@endguest

以上這篇Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Laravel 5.1 框架Blade模板引擎用法實(shí)例分析
  • Laravel中的Blade模板引擎示例詳解
  • Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹
  • Laravel 5框架學(xué)習(xí)之Blade 簡介
  • Laravel框架中Blade模板的用法示例
  • Laravel框架之blade模板新手入門教程及小技巧
  • 解決Laravel blade模板轉(zhuǎn)義html標(biāo)簽的問題
  • 在Laravel 的 Blade 模版中實(shí)現(xiàn)定義變量
  • Laravel 實(shí)現(xiàn)在Blade模版中使用全局變量代替路徑的例子
  • laravel框架實(shí)現(xiàn)為 Blade 模板引擎添加新文件擴(kuò)展名操作示例

標(biāo)簽:棗莊 衢州 廣元 蚌埠 萍鄉(xiāng) 江蘇 大理 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    双桥区| 阿拉尔市| 阳谷县| 米脂县| 北宁市| 南和县| 屏东县| 潞城市| 永平县| 铜山县| 宁海县| 沧源| 波密县| 宜阳县| 荣昌县| 江山市| 漳州市| 津市市| 和平区| 常州市| 芦山县| 桃园县| 乌什县| 柯坪县| 丘北县| 天津市| 嘉善县| 凤台县| 宝清县| 玉树县| 渭源县| 新兴县| 鲜城| 四会市| 莱阳市| 武汉市| 张家口市| 铜梁县| 班玛县| 澎湖县| 岳西县|