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 应用程序安全防范技术研究
Sep 25 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
Yii2如何批量添加数据
May 17 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
php中各种定义变量的方法小结
Oct 18 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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
基于xcache的配置与使用详解
2013/06/18 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
XML的代替者----JSON
2007/07/21 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
用Python实现读写锁的示例代码
2018/11/05 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
实现Python与STM32通信方式
2019/12/18 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
大学生党员自我评价范文
2014/04/09 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
无线电知识基础入门篇
2022/02/18 无线电
2022微信温控新功能上线
2022/05/09 数码科技