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 在线打包_支持子目录
Jun 28 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
PHP的拦截器实例分析
Nov 03 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
PHP类的封装与继承详解
Sep 29 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 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判断数据库中的记录是否存在的方法
2014/11/14 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
用ADODB.Stream转换
2007/01/22 Javascript
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
js opener的使用详解
2014/01/11 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
高中军训广播稿
2014/01/14 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
刑事起诉书范文
2015/05/19 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
python基础之停用词过滤详解
2021/04/21 Python
小程序实现文字循环滚动动画
2021/06/14 Javascript
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL