亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Laravel中的Blade模板引擎示例詳解

2024-05-05 00:00:26
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Laravel中Blade模板引擎的相關內容,分享出來供大家參考學習,話不多說了,來一起看看詳細的介紹吧。

Blade 模板引擎

Blade 是 laravel 提供的一個簡單強大的模板引擎,它是把 Blade 視圖編譯成原生的 PHP 代碼并緩存起來。緩存會在 Blade 視圖改變時而改變,這意味著 Blade 并沒有給你的應用添加編譯的負擔。Blade 視圖文件使用 .blade.php 后綴,一般都存儲在 resources/views 目錄下。

模板繼承

先來看個例子

<!-- Stored in resources/views/layouts/master.blade.php--><html> <head> <title>App Name - @yield('title')</title> </head> <body> @section('sidebar')  This is the master sidebar. @show  <div class="container">  @yield('content') </div> </body></html>

Blade 模板文件包含了典型的 HTML 標記。你肯定看到了 @section 和 @yield 指令。@section 指令就如它的名字所暗示的那樣定義了一個內容區塊,而 @yield 指令是用來顯示所提供的掛件區塊所包含的內容。我們已經定義好了一個基本的布局,接下來我們可以使用 Blade 的 @extends 指令來明確的指定繼承這個布局。然后使用 @section 指令將掛件中的內容掛載到布局中,在上面的例子中,掛件的內容將被掛載到布局中的 @yield 部分:

<!-- Stored in resoures/views/child.blade.php -->@extends('layouts.master') @section('title', 'Page Title') @section('sidebar') @parent  <p>This is appended to the master sidebar.</p>@endsection @section('content') <p>This is my body content.</p>@endsection

在上面的例子作用 sidebar 掛件利用 @parent 指令來追加布局中的 sidebar 部分的內容,如果不使用則會覆蓋掉布局中的這部分。@parent 指令會在視圖被渲染時替換為布局中的內容。

Blade 視圖可以像原生 PHP 視圖一樣使用全局幫助函數 view 來返回渲染后的內容:

Route::get('blade', function () { return view('child');});

顯示數據

你可以使用花括號 { 來在視圖中顯示傳遞到視圖中的變量,例如,你定義了下面的路由:

Route::get('greeting', function () { return view('welcome', ['name' => 'Duicode']);})

你可以在視圖中這樣來輸出 name 變量的內容:

Hello, {{ $name }}

當然,你也可以從原生 PHP 方法中返回內容。事實上,你可以在 Blade echo 聲明中使用任意的 PHP 代碼:(Blade {{}} 聲明中的內容是自動通過 htmlentities 方法過濾的,用來防止 XSS 攻擊。)

The current UNIX timestamp is {{ time() }}

由于很多 JavaScript 框架都使用花括號來表明所提供的表達式應該被顯示在瀏覽器中。所以你可以使用 @ 符號來告訴 Blade 渲染引擎你需要這個表達式原樣保留:

Hello, @{{ name }}

我們常用三目運算符來賦值

{{ isset($name) ? $name : 'Default' }}

Blade 提供了一個便捷的方式來替換這個三元聲明:

{{ $name or 'Default' }}

默認Blade {{}} 聲明會自動的使用 htmlentities 方法來避免 XSS 攻擊。如果你不想你的數據被轉義,你可以使用下面的語法,但是要注意,小心被攻擊:

Hello, {!! $name !!}

控制結構

你可以通過 @if,@elseif,@else和 @endif 指令來使用 if 控制結構 :

@if (count($records) === 1) I have one record!@elseif (count($records) > 1) I have multiple records!@else I don't have any records!@endif

當然為了方便,Blade 也提供了替代指令 @unless 指令:

@unless (Auth::check()) You are not signed in.@endunless

也可以使用 @hasSection 指令來判斷提供給布局的掛件是否包含了內容:

<title> @hasSection('title') @yield('title') - App Name @else App Name @endif</title>

說到控制少不了循環結構,類似PHP的:

@for ($i = 0; $i < 10; $i++) The current value is {{ $i }}@endfor @foreach ($users as $user) <p>This is user {{ $user->id }}</p>@endforeach @forelse ($users as $user) <li>{{ $user->name }}</li>@empty <p>No users</p>@endforelse @while (true) <p>I'm looping forever.</p>@endwhile

Blade 也提供了終止迭代或取消當前迭代的指令:

@foreach ($users as $user) @if($user->type == 1) @continue @endif  <li>{{ $user->name }}</li>  @if($user->number == 5) @break @endif@endforeach

你也可以使用指令聲明包含條件的方式來達到中斷:

@foreach ($users as $user) @continue($user->type == 1)  <li>{{ $user->name }}</li>  @break($user->number == 5)@endforeach

包含子視圖

可以使用 @include 指令來包含一個視圖的內容,當前視圖中的變量也會被共享給子視圖:

<div> @include('shared.errors')  <form> <!-- Form Contents --> </form></div>

盡管子視圖會自動繼承父視圖中的所有數據變量,你也可以直接傳遞一個數組變量來添加額外的變量到子視圖(在 Blade 視圖中避免使用 __DIR__ 和 __FILE__ 常量,因為它們會解析為視圖緩存所在的位置):

@include('view.name', ['some' => 'data'])

你可以使用 Blade 的 @each 指令來在一行中合并引入多個視圖:

@each('view.name', $jobs, 'job')

第一個參數是數組或集合中每個元素需要被渲染的視圖名稱。

第二個參數是一個數組或集合,被用來提供迭代。

第三個參數是要分配給當前視圖的變量名。

你也可以傳遞第四個參數到 @each 指令。如果所提供的數組是空數組的話,該參數所提供的視圖將會被引入。

@each('view.name', $jobs, 'job', 'view.empty')

Blade 中的注釋,這樣寫不會被渲染:

{{-- This comment will not be present in the rendered HTML --}}

Blade 允許你在已命名的堆中壓入內容:

@push('scripts') <script src="/example.js"></script>@endpush

你可以在你需要的時候壓入相同的堆任意的次數,你需要在布局中使用 @stack 來渲染堆:

<head> <!-- Head Contents --> @stack('scripts')</head>

可以使用 @inject 指令來從服務容器中取回服務:

@inject('metrics', 'App/Services/MetricsService')<div> Monthly Revenue: {{ $metrice->monthlyRevenue() }}</div>

第一個參數將作為所取回服務存放的變量名,

第二個參數是你想要在服務容器中取回的類或接口名稱。

可以使用 directvie 方法來注冊指令。當 Blade 編譯器遇到該指令時,它會自動的調用該指令注冊時提供的回調函數并傳遞它的參數。

下面的例子創建了 @datetime($val) 指令來格式化 $val:

<?phpnamespace App/Providers; use Blade;use Illuminate/Support/ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * Perform post-registration booting of services. * * @return void */ public function boot(){  Blade::directive('datetime', function ($expression) {  return "<?php echo with{$express}->format('m/d/Y H:i'); ?>";  }); }  /** * Register bindings in the container * * @return void */ public function register() {  // }}

上面的例子中使用了 Laravel 的 with 幫助方法,它只是簡單的返回一個所提供的對象或值,并提供方便的鏈式調用。最終該指令生成的 PHP 代碼如下:

 <?php echo with($var)->format('m/d/Y H:i'); ?>

在你更新 Blade 指令的邏輯之后,你應該刪除所有已緩存的 Blade 視圖,你可以使用 view:clear Artisan 命令來清除。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成电影网站色xx| 国产精品人成电影在线观看| 亚洲免费高清视频| 欧美一区三区三区高中清蜜桃| 国产国产精品人在线视| 国产脚交av在线一区二区| 97热精品视频官网| 亚洲新中文字幕| 亚洲人成网站色ww在线| 色偷偷888欧美精品久久久| 91精品国产91久久久久久不卡| 国产精品嫩草视频| 国产精品久久婷婷六月丁香| 欧美一级大片视频| 久久久久久国产精品| 91人成网站www| 国产亚洲精品91在线| 久久久久日韩精品久久久男男| 国产91精品最新在线播放| 日韩欧美国产视频| 人人澡人人澡人人看欧美| 亚洲电影免费观看高清| 亚洲欧美日本伦理| 日韩www在线| 国产成人精品综合久久久| 亚洲最大av网站| 91精品免费久久久久久久久| 97国产真实伦对白精彩视频8| 欧美日韩亚洲一区二区三区| 久久久久久久久久国产精品| 国产伦精品一区二区三区精品视频| 日韩暖暖在线视频| 欧美精品久久一区二区| 亚洲欧美成人精品| 日韩av影视综合网| 亚洲一区二区黄| 亚洲va国产va天堂va久久| 欧美极品第一页| 日韩av成人在线| 亚洲国产精品一区二区三区| 国产精品99蜜臀久久不卡二区| 亚洲色图综合久久| 中国人与牲禽动交精品| 97精品国产97久久久久久春色| 黄色精品在线看| 国产精品久久久久久久9999| 亚洲人成伊人成综合网久久久| 欧美日韩一区二区精品| 国产视频在线观看一区二区| 欧美制服第一页| 97超级碰碰碰久久久| 55夜色66夜色国产精品视频| 蜜臀久久99精品久久久久久宅男| 色爱精品视频一区| 亚洲成色www8888| 亚洲美女视频网站| 欧美午夜激情小视频| 亚洲欧美www| 在线日韩欧美视频| 成人午夜在线视频一区| 国产精品美女在线观看| 久久精品国产综合| 久久69精品久久久久久国产越南| 午夜美女久久久久爽久久| 亚洲 日韩 国产第一| 一区二区欧美日韩视频| 亚洲成人999| 北条麻妃久久精品| 97精品久久久中文字幕免费| 久久精品99久久香蕉国产色戒| 日韩女优人人人人射在线视频| 97国产一区二区精品久久呦| 亚洲成人在线网| 啊v视频在线一区二区三区| 日韩欧美视频一区二区三区| 日韩精品在线免费观看视频| 亚洲欧美一区二区三区四区| 亚洲欧洲高清在线| 国产精品wwwwww| 免费91麻豆精品国产自产在线观看| 亚洲女成人图区| 91精品视频观看| 91手机视频在线观看| 亚洲大胆美女视频| 91成人在线观看国产| www欧美xxxx| 日韩在线视频免费观看| 国色天香2019中文字幕在线观看| 欧美在线一级视频| 日韩av有码在线| 91久久精品国产91久久性色| 色噜噜亚洲精品中文字幕| 国产精品一区久久| 亚洲欧美国产日韩天堂区| 亚洲国产精品一区二区三区| 欧美亚洲国产视频| 92裸体在线视频网站| 国产www精品| 国产日韩欧美黄色| 国产美女直播视频一区| 久久久免费观看视频| 国产精品美腿一区在线看| 97人人爽人人喊人人模波多| 久久99久久99精品免观看粉嫩| 成人有码视频在线播放| 欧美最猛性xxxx| 亚洲xxxxx电影| 久久香蕉频线观| 亚洲男人第一av网站| 最近2019免费中文字幕视频三| 欧美日韩美女在线观看| 91欧美精品成人综合在线观看| …久久精品99久久香蕉国产| 91人成网站www| 国语自产精品视频在线看抢先版图片| 高清欧美性猛交xxxx| 色阁综合伊人av| 国产精品一区二区av影院萌芽| 成人性生交大片免费看视频直播| 精品免费在线视频| 日韩欧美国产网站| 国产精品jvid在线观看蜜臀| 青青a在线精品免费观看| 成人激情在线播放| 精品国内产的精品视频在线观看| 国产欧美日韩专区发布| 欧美亚洲国产另类| 久久精品视频在线| 欧美高清一级大片| 国产欧美日韩免费看aⅴ视频| 久久久久久久电影一区| 欧美激情久久久久久| 亚洲级视频在线观看免费1级| 欧美性xxxx18| 亚洲欧美激情另类校园| 精品久久久久久久久中文字幕| 成人网在线免费观看| 久久天天躁夜夜躁狠狠躁2022| 国内精品免费午夜毛片| 欧美日韩不卡合集视频| 亚洲图片制服诱惑| 欧美日韩视频免费播放| 欧美国产日韩精品| 久久精品国产亚洲一区二区| 成人妇女免费播放久久久| 亚洲成人激情在线观看| 中文字幕欧美视频在线| 国产精品jizz在线观看麻豆| 国产精品久久久久一区二区| 精品久久久精品| 97超级碰碰碰| 欧美人与性动交| 色与欲影视天天看综合网| 亚洲人成人99网站| 欧美大肥婆大肥bbbbb| 亚洲国产欧美一区二区三区久久| 97精品免费视频| 国产精品久久久久91| 欧美精品在线视频观看| 日韩的一区二区| 中文字幕亚洲一区二区三区五十路| 国产专区欧美专区| 中日韩美女免费视频网址在线观看| 另类少妇人与禽zozz0性伦|