Laravel 5.1 框架Blade模板引擎用法实例分析


Posted in PHP onJanuary 04, 2020

本文实例讲述了Laravel 5.1 框架Blade模板引擎用法。分享给大家供大家参考,具体如下:

为什么要使用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 < 10; $i++)
    <p>{{ $i }}</p>
  @endfor

3.4 foreach控制 - 循环遍历

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一个简单的PHP入门源程序
Oct 09 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
PHP 一个随机字符串生成代码
May 26 PHP
php导入导出excel实例
Oct 25 PHP
提高PHP编程效率的方法
Nov 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php rsa加密解密使用详解
Jan 14 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
PHP加密解密类实例代码
Jul 20 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
php微信开发之关注事件
Jun 14 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 #PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 #PHP
Laravel5.1 框架路由基础详解
Jan 04 #PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 #PHP
PHP+MySQL实现在线测试答题实例
Jan 02 #PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 #PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 #PHP
You might like
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
PHP Stream_*系列函数
2010/08/01 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
前端性能优化及技巧
2016/05/06 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python中类的继承代码实例
2014/10/28 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python实现时间序列可视化的方法
2019/08/06 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
观看《永远的雷锋》心得体会
2014/03/12 职场文书
推荐信格式范文
2014/05/09 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Django框架之路由用法
2022/06/10 Python