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桌面中心(一) 创建数据库
Mar 11 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
codeigniter框架批量插入数据
Jan 09 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 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.ini中文版
2006/10/09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
python Opencv将图片转为字符画
2021/02/19 Python
对python判断是否回文数的实例详解
2019/02/08 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
如何手工释放资源
2013/12/15 面试题
自主招生自荐信指南
2014/02/04 职场文书
《胡杨》教学反思
2014/02/16 职场文书
班长演讲稿范文
2014/04/24 职场文书
学校欢迎标语
2014/06/18 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书