为什么要使用blade 它是干什么用的?

blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率。我们写blade的路径是 resources/view 下,它的文件名后缀是blade.php。


1 继承

继承是相当爽的,它可以从主模板继承所有代码,以免大量的代码重复。这样说比较片面,具体看眼代码吧。

1.1 模板继承拓展 代码片段

首先先创建一个 admin/layout.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Learn Laravel-- @yield('title')</title>
</head>
<body>
@section('navibar')
The master navigation bar
@show <div class="container">
@yield('content')
</div>
</body>
</html>

然后创建 admin/home.blade.php 继承自layout:

@extends('admin.layout')
@section('title')
Home
@endsection @section('navibar')
@parent
<p>增加别的代码 不是完全覆盖</p>
@endsection @section('content')
<p>Content body</p>
@endsection

注册路由 实现控制器方法并展示

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function (){
Route::resource('/', 'HomeController');
});
    public function index()
{
return view('admin.home');
}

总结: 好了 现在咱先看layout代码 它初始定义了一个HTML简单的模板,在需要拓展的地方都加上了@yield关键字 这代表可填充的一块儿代码片段区域,而@section(navi)是声明了一段片段 然后通过@show来展示。

然后我们创建了home文件,它可以继承自layout 通过@extends() 继承之后就可以使用@section填充layout中的@yield的了,一个yield对应着一个section,关于layout中的@section(navi) 在home中也进行了补充 因为使用了@parent关键字,代表着不覆盖父模板的代码片段 而是在父模板的代码片段最后追加代码,当然啦 如果你要是去掉@parent关键字就会覆盖掉。

如果这么说你还是不明白的话,打开编译器敲一遍 看看结果就清楚了。


1.2 引入一段代码

这也是blade相当强大的地方 当你写了一段HTML之后呢 发现其中有些内容在别的页面下重用率很高,你完全可以把它抽出来放在另一个blade中,然后每当你要使用这段代码时使用@include引入就行了。

首先我们先来创建一个 some.blade.php(至于放在哪里随你便) :

<p>这只是一个演示 所以不浪费时间写太多的HTML</p>

然后在home中引用它吧:

@extends('admin.layout')
@section('title')
Home
@endsection @section('navibar')
@parent
<p>增加别的代码 不是完全覆盖</p>
@endsection @section('content')
@include('admin.some')
<p>Content body</p>
@endsection

2 数据展示

这段说说如何将数据传入到一个视图 然后将它展示到页面上。

2.1 数据传入

数据传入有两种种方法 先说第一种 数组方式:

    public function index()
{
$name = 'K';
return view('admin.home', compact('name'));
// 也可以这么写
// return view('admin.home', ['name' => $name]);
}

第二种方法是with方法:

    public function index()
{
$name = 'K';
return view('admin.home')->with('name', $name);
}

2.2 展示数据

第一种展示方法 {{ }},用双花括号括起来就可以展示传入blade模板的变量,在{{ }} 里是可以使用PHP代码的:

<p>用户:{{ $name }}</p>

第二种展示方法{!!  !!},它是不经过htmlentities函数处理的,所以说你传递的数据是html数据的话 可以使用这种方法:

return view('admin.home')->with('name', '<h1>K</h1>');
<p>用户:{!! $name !!}</p>

3 控制语句

blade模板为了最大化使代码简洁呢 它本身自带了很多控制语句 这跟咱学的PHP很类似,就是if啊 foreach啊什么的

3.1 if控制 - 如果

废话不多说 实例放这你就能懂:

    @if(isset($name))
<p>{{ $name }}</p>
@else
<p>None</p>
@endif

3.2 unless控制 - 除非

    @unless(!isset($name))
<p>{{ $name }}</p>
@endunless

3.3 for控制 - 循环

    @for ($i = 0; $i <; $i++)
<p>{{ $i }}</p>
@endfor

3.4 foreach控制 - 循环遍历

    {{--$names = ['k', 'l', 'i'];--}}
@foreach($names as $name)
<p>{{ $name }}</p>
@endforeach

Laravel 5.1 Blade模板引擎的更多相关文章

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

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

  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. 为 Blade 模板引擎添加新文件扩展名

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

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

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

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

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

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

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

  9. Laravel 4 Blade模板引擎

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

随机推荐

  1. SSH V2的中间人攻击

    SSH V2的中间人攻击 2012-12-19 10:48:52     我来说两句      作者:Dis9Team 收藏    我要投稿 中间人攻击(Man-in-the-MiddleAttack ...

  2. phpunit与xdebug的使用

    基本说明: 1.xdebug是程序猿在调试程序过程中使用的bug调试暴露工具 windows下安装: 1)下载php对应的dll文件,下载地址:https://xdebug.org/download. ...

  3. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计

    前言:这个项目是毕设时候做的,我负责后台数据操作部分,已经很久了,这次回顾这部分,是为了复习PHP和MySQL的知识,正好现在在公司也负责的是后台管理系统的业务.第一篇[项目概况]附上毕业论文部分节选 ...

  4. ChannelHandlerContext writeAndFlush(firstMessage)

  5. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)人机界面Paintbuffer Overflow怎么办

    当在界面上绘制了太多元素时,点击运行会在左上角弹出对话框提示内容容量不够   在英文版的说明中,点击Visualization Manager就可以进行设置     更多教学视频和资料下载,欢迎关注以 ...

  6. 在Dell XPS 13安装WIN10和ubuntu双系统

    新入了Dell的XPS 13超级本,之所以买这个本子,就是看中它轻便且续航持久.这款本子也是为数不多的能够和苹果的13'' mac book air一较高下的本子.在重量上,占地面积和综合性价比上,还 ...

  7. python 创建类先执行metaclass父类__new__ > __init__>__call__ 然后再执行自己的__new__>__init__

    class MyType(type): def __init__(self,*args,**kwargs): print("Mytype __init__",*args,**kwa ...

  8. Android开发SDK接入机智云,智能家居实现APP远程控制多设备

    代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...

  9. Oracle undo 表空间管理 (摘DAVID)

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  10. java线程不安全类与写法

    线程不安全类 1.为什么java里要同时提供stringbuilder和stringbuffer两种字符串拼接类 2.simpledateformate是线程不安全的类,如果把它作为全局变量会有线程安 ...