blade 模板学习

特点

主要的两个优点是:模板继承和区块

继承页面布局

布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合。在blade文件之中的体现为:

在详情视图文件之中“继承”布局文件。如:

在详情文件(page.php)头部使用命令@extend(“layout.php”)

在yii或handbar模版之中,都有占位符,同样地也类似于vue之中的父子组件之间的传值,在blade模版之中,在父模版之中@yield命令来显示子模板之中的区块名,并且在子模板以@section()和@endsection()来“声明”区块。(基于这个继承关系,姑且称为父模板与子模板)。

此外,blade支持{{ $name }},这样的类似其他模版引擎的语法引入变量。而容易与前端的模板引擎冲突,如arttemplate(简明语法),vue的取值表达式相互冲突,blade提供的解决方案是:在双花括号之前加上@,eg:

<h1>laravel</h>
halo,@{{name}}

当大片使用javascript变量的时候,可以使用@verbatim指令包裹html内容,这样就不需要为每个需要解析的变量增加@符号前缀:

@verbatim
<div class ="container"> Hello,{{name}} </div>
@endverbatim

结构控制

/*if ...else ...*/
@if(count($records) === 1)
我有一条记录!
@elseif(count($records > 1))
我有多条记录!
@else
我没有任何记录!
@endif /*for... foreach... empty... empty...*/
@for($i = 0 ; $i < 10 ; $i++>)
目前的值为 {{ $i }}
@endfor @foreach($users as $user)
<p>此用户为 {{ $user->id }}</p>
@endforeach @empty
<p>没有用户</p>
@empty @while(true)
dead loop
@endwhile

在循环之中,可以使用$loop这个预定义的变量来获取一些关于循环的一些特效,特别的是在嵌套循环之中,可以通过$loop预定义对象来的parent来获取父循环中的$loop变量。如:

@foreach ($users as $user)

    @foreach($user->posts as $post)

        @if($loop->parent->first)

            This is first iteration of the parent loop.

        @endif

    @endforeach

@endforeach

$loop 这个预定义变量包含的属性如下。

属性 描述
$loop->index 当前循环所迭代的索引,起始为 0。
$loop->iteration 当前迭代数,起始为 1。
$loop->remaining 循环中迭代剩余的数量。
$loop->count 被迭代项的总数量。
$loop->first 当前迭代是否是循环中的首次迭代。
$loop->last 当前循环的嵌套深度。
$loop->depth 当前循环所迭代的索引,起始为 0。
$loop->parent 当在嵌套的循环内时,可以访问到父循环中的 $loop 变量。

php

当在页面之中引用少量的php代码的时候,可使用@php指令。如

@php
// php codes go here...
@endphp

引入子视图

blade的@include命令来引用已存在的视图,所有在父试图的可用变量在被引入的视图中都是可用的。如:

<div>
@include('shared.errors')
<from>
<!-- 表单内容 -->
</from>
</div>

除了继承父试图中的所有数据,也可以通过传递额外的数组数据至被引用的页面:

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

其他blade 功能不常用,不做分析...

lavarel模板引擎blade学习的更多相关文章

  1. Laravel 模板引擎Blade中标签详细介绍

    这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将 ...

  2. laravel使用的模板引擎 blade

    使用blade引擎的话必须在控制器中使用use   Blade

  3. Laravel模板引擎Blade中section的一些标签的区别介绍

    Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: 1.@yield ...

  4. Laravel中的模板引擎Blade

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 模板引擎Velocity学习系列-#set指令

    #set指令 #set指令用于向一个变量或者对象赋值. 格式: #set($var = value) LHS是一个变量,不要使用特殊字符例如英文句号等,不能用大括号括起来.测试发现#set($user ...

  6. 模板引擎jade学习

    语言参考 标签列表 doctype Tags Block Expansion Attributes Boolean Attributes Class Attributes Class Literal ...

  7. php模板引擎之blade

    一.简介模板引擎 模板引擎是将网站的页面设计和PHP应用程序几乎完全分离的一种解决方案,它能让前端工程师专注页面搭建,让后台工程师专注功能实现,以便实现逻辑分离,让每个人发挥所长.模板引擎技术的核心是 ...

  8. 深入浅出之Smarty模板引擎工作机制(二)

    源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解. Smarty模板引擎的原理,其实是这么一个过程: ...

  9. 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理

    什么叫做“模板引擎“?我是这么理解的:就是对一些待填入数据的占位符的解析.如果你使用过Python的django框架,那你肯定是模板一点也不陌生.模板引擎就是解析模板的,把后端数据塞到前端页面模板. ...

随机推荐

  1. asp.net的get和post请求

    asp.net的get和post请求 //获取第三方api的工具类 public class HttpUtils { public static string Get(string Url) { // ...

  2. CSS学习笔记03 CSS层叠性、继承性、特殊性

    层叠性 所谓层叠性是指多种CSS样式的叠加,也就是说后面设置的样式会层叠(覆盖)之前的样式,层叠性的前提是CSS的选择器的优先级相同,例如,当使用内嵌式CSS样式表定义<p>标记字号大小为 ...

  3. CSS学习笔记01 CSS简介

    1.CSS定义 CSS 指层叠样式表 (Cascading Style Sheets),是一种样式表语言,用来描述 HTML 或 XML(包括如 SVG.XHTML 之类的 XML 分支语言)文档的呈 ...

  4. 二叉搜索树(hdu3791)

    二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. mongodb远程连接访问

    随着云计算,云服务的不断发展演进,数据库的管理及维护方式也在转变,传统基于C/S客户端工具管理的方式,已经无法满足实际需要. TreeSoft数据库管理系统,采用web方式,对mongoDB,MySQ ...

  6. 【JavaFx教程】第三部分:与用户的交互

    第3部分的主题: 在表中反应选择的改变(TableView中). 增加增加,编辑和删除按钮的功能. 创建自定义弹出对话框编辑人员. 验证用户输入. 响应表的选择 显然,我们还没有使用应用程序的右边.想 ...

  7. HDU3534(SummerTrainingDay13-C tree dp)

    Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. zookeeper3.4.5+Hbase1.2.6安装教程

    说明:在安装zookeeper+Hbase之前,我们应该已经将hadoop集群搭建好了(三个节点),并且验证启动成功.因为HBase是一种构建在HDFS之上的分布式.面向列的存储系*统. zookee ...

  9. MySQL入门详解(二)---mysql事务、锁、以及优化

    MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...

  10. 【读书笔记】iOS-网络-Web Service协议与风格

    协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...