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

/**
* PHP laravel 5.0 Blade 模板引擎 Api使用备注
**/ //子模版中开头,调用@extends('wechat.layouts.base')
//表示当前子模版继承wechat/layouts/base.blade.php父模版,也就是把父模版插到这个子模版中
@extends('wechat.layouts.base') //在父模版base.blade.php中,给子模版调用使用,占的页面位置空位
@section('base-css')
@show //表示在这里输出显示 //当子模版调用base-css将include中的文件放到父模版的位置
@section('base-css')
@include('wechat.link.patient.app')
@stop //表示在这里进行内容解析,并结束后续对该section的处理 // @yield 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?
// @section 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? /*
首先,@yield 是不可扩展的,如果你要定义的部分没有默认内容让子模板扩展的,
那么用 @yield($name, $default) 的形式会比较方便,
如果你在子模板中并没有指定这个区块的内容,它就会显示默认内容,
如果定义了,就会显示你定义的内容。非此即彼。 与之相比, @section 则既可以被替代,又可以被扩展,这是最大的区别。比如:
*/ //父模版代码如下:
{{-- layout.master.blade.php --}}
@yield('title','默认标题') @section('content')
默认的内容
@show //子模版代码如下:
{{-- home.index.blade.php --}}
@extends('layout.master') @section('title')
@parent
新的标题
@stop @section('content')
@parent
扩展的内容
@stop /*
上面的例子中,父模板用 @yield 和 @section 分别定义了一个区块,
然后在子模板中去定义内容,由于 @yield 不能被扩展,所以即使加上了
@parent 也不起作用,输出的内容只有“新的标题”,替换了“默认的标题”。
因此最终生成的页面只能是“默认的标题”或者“新的标题”,不能并存。 而 @section 定义的部分,由于使用了 @parent 关键字扩展,父模板中的内容会被保留,
然后再扩展后添加的内容进去,输出的内容会是 “默认的内容 扩展的内容”。
*/ @parent //关键字,说的是默认行为是“扩展”
@show //指的是执行到此处时将该 section 中的内容输出到页面
@stop //则只是进行内容解析,并且不再处理当前模板中后续对该section的处理,除非用 @override覆盖 /*
通常来说,在首次定义某个 section 的时候,应该用 @show,
而在替换它或者扩展它的时候,不应该用 @show,应该用 @stop
下面用例子说明:
*/
//父模版
{{-- layout.master.blade.php --}}
<div id="zoneA">
@section('zoneA')
AAA
@show
</div> <div id="zoneB">
@section('zoneB')
BBB
@stop
</div> <div id="zoneC">
@section('zoneC')
CCC
@show
</div> //子模版
{{-- page.view.blade.php --}}
@extends('layout.master') @section('zoneA')
aaa
@stop @section('zoneB')
bbb
@stop @section('zoneC')
ccc
@show
/*
在 layout.master 中,用 @stop 来结束 "zoneB",由于整个模板体系中,
没有以 @show 结束的 "zoneB" 的定义,因此这个区块不会被显示。
而在 page.view 中,用 @show 定义了 'zoneC',这会在执行到这里时立即显示内容,
并按照模板继承机制继续覆盖内容,因此最终显示的内容会是: ccc // 来自 page.view
<div class="zoneA">
aaa
</div> <div class="zoneB">
zoneB由于没有@show结束的定义,所以不显示
</div> <div class="zoneC">
ccc
</div> 从结果可以看到,zoneB 的内容丢失,因为没有用 @show 告诉引擎输出这部分的内容,
而 zoneC 的内容会显示两次,并且还破坏了 layout.master 的页面结构,因为 @show 出现了两次。 */ @append 和 @override
/*
刚才说到了,@override 并不是在子模板中指明内容替换父模板的默认内容,而是另有用途,
那么是如何使用呢?这又涉及到一个 section 在模板中可以多次使用的问题。
也即我们所定义的每一个 section ,在随后的子模板中其实是可以多次出现的。比如:
*/ //父模版
{{-- master.blade.php --}}
<div>
@yield('content')
</div> //子模版
{{-- subview.blade.php --}}
@extends('master') @section('content')
加一行内容
@append @section('content')
再加一行内容
@append @section('content')
加够了,到此为止吧。
@stop /*
在上例中,我在父级模板中只定义了一个名为 "content" 的 section,
而在子模板中三次指定了这个 section 的内容。 这个例子最终的输出是:
*/
<div>
加一行内容
再加一行内容
加够了,到此为止吧。
</div> /*
三次指定的内容都显示出来了,关键就在于 @append 这个关键字,它表明“此处的内容添加到”,
因此内容会不断扩展。而最后用了 @stop,表示这个 section 的处理到此为止。如果在后面继续用
@append 或者 @stop 来指定这个 section 的内容,都不会生效。除非用 @override 来处理。
@override 的意思就是“覆盖之前的所有定义,以这次的为准”。比如:
*/
{{-- master.blade.php --}}
<div>
@yield('content')
@yield('message')
</div> {{-- master.blade.php --}}
<div>
@section('content')
加一行内容
@append
@section('content')
再加一行内容
@append
@section('content')
加够了,结束吧
@stop
@section('content')
都不要了,我说的。
@override
</div> //这个例子和刚才的类似,只不过最后加了一组定义。最终的输出会是:
<div>
都不要了,我说的。
</div> //所以,在正式的项目中,有时候需要对数据进行遍历输出的,可以使用 @append,
//而如果遍历到了某个数据发现前面的都错了呢?用 @override 就可以全部推翻。 @include('b.bb')
//如果视图文件夹views下有文件夹a和b,a中有aa.blade.php,b中有bb.blade.php。
//如果要在aa.blade.php中包含bb,@include('b.bb')即可,其中的‘.’可以是'\'或'/'
@include('wechat.scripts.component.media', ['container' => '要传的参数值'])
//第一个参数为插入的模版路径,第二个参数为,子模版本的传参
//子模版:<p>我是include {{ $container }}</p> == <p>我是include 要传的参数值</p>

  

参考:http://www.mb5u.com/biancheng/php/php_100436.html 

http://www.jb51.net/article/60957.htm

PHP laravel 5.0 Blade 模板引擎 Api使用备注的更多相关文章

  1. Laravel 5.1 Blade模板引擎

    为什么要使用blade 它是干什么用的? blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率.我们写blade的路径是 resource ...

  2. laravel框架之blade模板引擎

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

  3. laravel Blade 模板引擎

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

  4. Laravel 5.2 三、中间件、视图与 Blade 模板引擎

    一.中间件 Laravel 的 HTTP 中间件提供了对路由的一层过滤和保护.下面模拟一下用中间件验证后台登录. 1. 创建中间件 cmd 窗口进入项目目录,使用 artisan 命令创建 php a ...

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

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

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

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

  7. Laravel之视图和Blade模板引擎

    一.视图 1.视图文件存放在resources/views目录2.视图载入及传参 return view('greeting', ['name' => 'James']); 还可以通过with ...

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

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

  9. Laravel 4 Blade模板引擎

    http://my.oschina.net/5say/blog/201290 模板输出 基本输出 1 <!-- app/views/example.blade.php --> 2 < ...

随机推荐

  1. Now or later UVALive - 3211(2-SAT 最小值最大化)

    emmm...去吃早饭了... rujia讲的很好.. 最小值最大化问题,,,二分枚举答案   设x1.x2为同一个集合中的元素,y1.y2为另一个集合中的元素,如果x1与y1之差小于mid,那么如果 ...

  2. 【刷题】洛谷 P2664 树上游戏

    题目描述 lrb有一棵树,树的每个节点有个颜色.给一个长度为n的颜色序列,定义s(i,j) 为i 到j 的颜色数量.以及 \[sum_i=\sum_{j=1}^ns(i,j)\] 现在他想让你求出所有 ...

  3. 【BZOJ5338】[TJOI2018]异或(主席树)

    [BZOJ5338][TJOI2018]异或(主席树) 题面 洛谷 题解 很明显的是\(Trie\)树上暴力判断答案 因为要支持区间,用主席树的结构存\(Trie\)树就好了 #include< ...

  4. 《Java程序设计》第九周学习总结 20165218 2017-2018-2

    20165218 2017-2018-2 <Java程序设计>第9周学习总结 教材学习内容总结 第13章 Java网络编程 URL类 位于java.net包,使用URL创建对象的应用程序称 ...

  5. bzoj3709: [PA2014]Bohater(贪心)

    贪心... 可以回血的按d[i]升序防止死掉 不能回血的按a[i]降序,因为只考虑d我们要扣除的血量是一定的,为了不死显然回血多的放前面更好 #include<iostream> #inc ...

  6. 【数学】【CF27E】 Number With The Given Amount Of Divisors

    传送门 Description 给定一个正整数\(n\),输出最小的整数,满足这个整数有n个因子 Input 一行一个整数\(n\) Output 一行一个整数,代表答案. Hint \(1~\leq ...

  7. Web之CGIC的介绍与使用20171229

    一.CGIC简介 1.CGI简介 CGI(Common Gateway Interface)是外部应用扩展应用程序与WWW服务器交互的一个标准接口.按照CGI标准编写的外部扩展应用程序可以处理客户端浏 ...

  8. 洛谷P1396 营救

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...

  9. python学习笔记(五) 200行实现2048小游戏

    用前文提到的基础知识,和网上流行的2048源码,用python实现该游戏. 先将用户操作和游戏逻辑绑定. WASD分别对应移动方向上.左.下.右 然后实现矩阵的转置和逆置,这样只要实现一个方向的移动, ...

  10. Kubernetes 1.5部署sonarqube

    前面几篇博文我们一直在说kubernetes的基础环境的安装及部署.在基础环境部署完成以后,我们开始尝试使用kubernetes来管理我们的应用.本篇博文通过一个简单的示例来向大家展示如何通过depl ...