巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

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

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-25 14:40:49 阅读数: 148

媒介

本文首要给大师先容了对Laravel中Blade模板引擎的相干内容,分享出来供大师参考进修,话未几说了,来一路看看详细的先容吧。

Blade 模板引擎

Blade 是 laravel 供给的一个简略壮大的模板引擎,它是把 Blade 视图编译成原生的 PHP 代码并缓存起来。缓存会在 Blade 视图转变时而转变,这象征着 Blade 并不给你的操纵增加编译的承担。Blade 视图文件操纵 .blade.php 后缀,普通都存储在 ../skin/v7red/resources/views 目次下。

模板担当

先来看个例子

<!-- Stored in ../skin/v7red/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", "AppServicesMetricsService")<div> Monthly Revenue: {{ $metrice->monthlyRevenue() }}</div>

第一个参数将作为所取回办事寄存的变量名,

第二个参数是你想要在办事容器中取回的类或接口称号。

能够操纵 directvie 体例来注册指令。当 Blade 编译器碰到该指令时,它会主动的挪用该指令注册时供给的回调函数并通报它的参数。

下面的例子建立了 @datetime($val) 指令来格局化 $val:

<?phpnamespace AppProviders; use Blade;use IlluminateSupportServiceProvider; 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 号令来断根。

总结

以上便是这篇文章的全数内容了,但愿本文的内容对大师的进修或任务具备必然的参考进修代价,若是有疑难大师能够留言交换,感谢大师对网页设想的撑持。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。比来几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

17
05月
清点影响网站收录量的身分_巅云建站

一向都是站长们存眷的核心,良多er都因量过少不不变而全日内心不安,破费大批的时候去寻觅处理的体例,却不得其道。这是为甚么呢?明天我就以一位老... >>概况

27
04月
CodeIgniter节制器之营业逻辑实例分

本文实例阐发了CodeIgniter节制器之营业逻辑。分享给大师供大师参考,详细以下:后面阐发了公用节制器按模块散发,便利对特定模块的节制,... >>概况

28
04月
memcache分歧性hash的php完成方

本文实例报告了memcache分歧性hash的php完成体例。分享给大师供大师参考。详细以下:比来在看一些散布式方面的文章,以是就用php实... >>概况

04
05月
SEO最主要常识:关头词权重比例

用户操纵某个关头词停止搜刮,你的网站在该关头词下的排名地位与以下身分有关,这些身分是:Title 标签中的关头词操纵;页面内容中的关头词操纵... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站