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 不错的学习资料
Feb 06 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
基于php下载文件的详解
Jun 02 PHP
php header功能的使用
Oct 28 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
详解php中 === 的使用
Oct 24 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
php 数组元素快速去重
May 05 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php实现网页端验证码功能
2017/07/11 PHP
判断浏览器的javascript版本的代码
2010/09/03 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
python实现抽奖小程序
2020/04/15 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
《难忘的泼水节》教学反思
2014/02/27 职场文书
教师自我鉴定范文
2014/03/20 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
公司捐款倡议书
2014/05/14 职场文书
会计学专业自荐信
2014/06/25 职场文书
新党章心得体会
2014/09/04 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
大学迎新生标语
2014/10/06 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏