php模板引擎之blade
一、简介模板引擎
模板引擎是将网站的页面设计和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的更多相关文章
- PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究
PHP 转义 实现 把输出渲染成网页或API响应时,一定要转义输出,这也是一种防护措施,能避免渲染恶意代码,造成XSS攻击,还能防止应用的用户无意中执行恶意代码. 我们可以使用前面提到的 htmlen ...
- php模板引擎
http://baike.baidu.com/link?url=HmXfdJBv3zpCdnZPeaSmZmqDBHlyTBnz9Rmb5it-jf1_NLHfaku6_i8ssUYbnaTQEBD4 ...
- laravel框架总结(二) -- blade模板引擎
## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...
- Laravel 模板引擎Blade中标签详细介绍
这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将 ...
- laravel Blade 模板引擎
与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染.和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐 ...
- lavarel模板引擎blade学习
blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...
- laravel框架之blade模板引擎
## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...
- 为 Blade 模板引擎添加新文件扩展名
因为一些原因,我准备把 Blessing Skin 的框架换成 Laravel 了(之前是自己搭建的一个框架),但是在模板迁移的时候遇到了一点问题. 之前我是使用的 XiaoLer/blade 这个从 ...
- PHP laravel 5.0 Blade 模板引擎 Api使用备注
PHP laravel 5.0 Blade 模板引擎 Api使用备注 /** * PHP laravel 5.0 Blade 模板引擎 Api使用备注 **/ //子模版中开头,调用@extends( ...
随机推荐
- Java基础-使用Idea进行远程调试
Java基础-使用Idea进行远程调试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 使用Python的turtle(海龟)模块画图
第一步:让Python引入turtle模块,引入模块就是告诉Python你想要用它. import turtle 第二步:创建画布.调用turtle中的Pen函数 t = turtle.Pen() 第 ...
- jquery(入门篇)无缝滚动
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- [转载]ASP.NET Error – Adding the specified count to the semaphore would cause it to exceed its maximum count
http://jwcooney.com/2012/08/13/asp-net-error-adding-the-specified-count-to-the-semaphore-would-cause ...
- python爬虫-图片批量下载
# 爬起摄图网的图片批量下载# coding:utf-8 import requests from bs4 import BeautifulSoup from scipy.misc import im ...
- py-faster-rcnn代码阅读3-roidb.py
roidb是比较复杂的数据结构,存放了数据集的roi信息.原始的roidb来自数据集,在trian.py的get_training_roidb(imdb)函数进行了水平翻转扩充数量,然后prepare ...
- memcache 键名的命名规则以及和memcached的区别
2014年3月27日 07:47:46 Keys---- Data stored by memcached is identified with the help of a key. A keyis ...
- Axure RP Pro 7.0
Axure RP Pro专为Rapid Prototype Design而生,它可以辅助产品经理快速设计完整的产品原型,并结合批注.说明以及流程图.框架图等元素将产品完整地表述给各方面设计人员,如UI ...
- 二十三、springboot之session共享
通过redis实现session共享 SpringBoot集成springsession 1.引入依赖(gradle方式) dependencies { compile('org.springfram ...
- [原创]win7环境下搭建eclipse+python+django开发环境
一)工具下载 a)eclipse(最新版4.3.1)官网下载地址 http://www.eclipse.org/downloads/ b)python (2.X版本)官网下载地址 http://pyt ...