一、简介模板引擎

模板引擎是将网站的页面设计和PHP应用程序几乎完全分离的一种解决方案,它能让前端工程师专注页面搭建,让后台工程师专注功能实现,以便实现逻辑分离,让每个人发挥所长。模板引擎技术的核心是将前端页面指定为模板文件,并用定界符双花括号把文件中标签的跳转地址或数据包起来,后面PHP脚本程序打开该模板文件,并替换变量,进而输出完整的交互页面。

二、简介Blade模板引擎

Blade是laravel框架下的一种简单又强大的模板引擎,Blade 非常快,因为只使用了少量的正则表达式把模板文件编译成原始的php代码。blade模板引擎由模板继承和模板片段驱动,所有的blade模板文件必须使用.blade.php作为文件扩展名。

三、Blade常用语法 

1、模块引用,自定义变量

@include('file', ['variable' => $val])

2、扩展子模块

{{-- layout.master --}}
@yield('title','默认标题')

@section('content')
默认的内容
@show
{{-- home.index --}}
@extends('layout.master')
@section('title')
  @parent
  新的标题
@stop

@section('content')
  @parent
  扩展的内容
@stop

@yield是不可扩展的, @section既可以被替代,又可以被扩展。上面的例子中,模板用@yield和@section分别定义了一个区块,然后在子模板中去定义内容,由于@yield不能被扩展,所以即使加上了@parent也不起作用,输出的内容只有“新的标题”,替换了“默认的标题”。因此最终生成的页面只能是“默认的标题”或者“新的标题”,不能并存。而@section定义的部分,由于使用了@parent关键字,父模板中的内容会被保留,并且添加新的内容,输出的结果是“默认的内容 扩展的内容”。

@section对应的结束关键字,@show, @stop有什么区别呢?

在4.0 版本中,@endsection已经被移除,虽然向下兼容,但是不建议使用。

@show指的是执行到此处时,将该section中的内容输出到页面,而@stop则只是进行内容解析,并且不再处理当前模板中后续对该section的处理,除非用@override覆盖。

通常来说,在首次定义某个section的时候,应该用@show,而在替换它或者扩展它的时候,不应该用@show,应该用@stop。

3、打印变量或者默认值,自动转义变量内容中的html标签,使得html标签原样输出

{{ $name  or 'Lily'}}

4、打印变量原始内容,不进行转义

{!! '打印 <script>alert("Hello world!")</script>' !!}
var wxtitle="{!! addslashes($title) !!}";
阻止转义后,再阻止$title里面的特殊符号影响包在外面的双引号的正常匹配。

5、检查数据是否存在后,再打印数据

{{ isset($name) ?  $name  :  'Default' }} 或者 {{  $name or  'Default'  }}

6、打印数组,中断下面的代码

{{ dd($myArr) }}

7、打印数组,不中断下面的代码

{{ dump($myArr) }}

8、打印文字

@{{ 一段文字 }}
@{{ jsTemplate }}

9、注释

{{-- Comment --}}

10、条件语句

@if(isset($name) && !empty($name))
@elseif()
@else
@endif

11、循环语句

@for($i = 0; $i < 10; $i++)
输出 {{ $i }}
@endfor
@foreach($list as $val)
<p>{{ $val[‘url’] }}</p>
@endforeach
@foreach($list as $key => $val)
<p>{{ $key }} {{ $val[‘url’] }}</p>
@endforeach
@while(condition)
@endwhile

php模板引擎之blade的更多相关文章

  1. PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究

    PHP 转义 实现 把输出渲染成网页或API响应时,一定要转义输出,这也是一种防护措施,能避免渲染恶意代码,造成XSS攻击,还能防止应用的用户无意中执行恶意代码. 我们可以使用前面提到的 htmlen ...

  2. php模板引擎

    http://baike.baidu.com/link?url=HmXfdJBv3zpCdnZPeaSmZmqDBHlyTBnz9Rmb5it-jf1_NLHfaku6_i8ssUYbnaTQEBD4 ...

  3. laravel框架总结(二) -- blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

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

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

  5. laravel Blade 模板引擎

    与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染.和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐 ...

  6. lavarel模板引擎blade学习

    blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...

  7. laravel框架之blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  8. 为 Blade 模板引擎添加新文件扩展名

    因为一些原因,我准备把 Blessing Skin 的框架换成 Laravel 了(之前是自己搭建的一个框架),但是在模板迁移的时候遇到了一点问题. 之前我是使用的 XiaoLer/blade 这个从 ...

  9. PHP laravel 5.0 Blade 模板引擎 Api使用备注

    PHP laravel 5.0 Blade 模板引擎 Api使用备注 /** * PHP laravel 5.0 Blade 模板引擎 Api使用备注 **/ //子模版中开头,调用@extends( ...

随机推荐

  1. sqoop的安装与配置

    最近需要将MySQL的数据导出到HDFS,所以搜到了sqoop2.跟sqoop1相比,sqoop2的好处是直接使用程序连接到集群上的sqoop,远程操作.流程是需要先创建link也可以理解成要操作的对 ...

  2. Golang的交互模式进阶-读取用户的输入

    Golang的交互模式进阶-读取用户的输入 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 读写数据除了 fmt 和 os 包,我们还需要用到 bufio 包来处理缓冲的输入和输出. ...

  3. python---django中序列化

    def get_data(req): ret = {'status':True,'data':None} try: user_list = models.User.objects.all() ret[ ...

  4. Spark记录-Scala shell命令

    1.scala shell命令 scala> :help All commands can be abbreviated, e.g., :he instead of :help. :edit & ...

  5. Spark记录-Scala变量/访问修饰符/运算符

    变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变 ...

  6. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) A. Bits

    http://codeforces.com/contest/484/problem/A 题意: 询问[a,b]中二进制位1最多且最小的数 贪心,假设开始每一位都是1 从高位i开始枚举, 如果当前数&g ...

  7. ngx_lua_API 指令详解(五)coroutine.create,coroutine.resume,coroutine.yield 等集合指令介绍

    ngx_lua 模块(原理实现) 1.每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM: 2.将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问: ...

  8. html5 canvas 水平渐变描边

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 微信公众号用户OpenID同步导出系统

    一.简介 同步公众账号用户信息,包括OpenID.昵称.头像.地区等. 二.主要功能 同步公众账号用户 OpenID,以及昵称.头像.性别.地区.关注时间等,支持认证订阅号.认证服务号. 支持超过1万 ...

  10. Flex 数组问题!

    设计一个图形类,来对应一个图形! 这个类大概的代码是: public class ShapeModel extends ... { [bindable] private var _x:Number = ...