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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
php比较相似字符串的方法
Jun 05 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
php字符串函数学习之substr()
2015/03/27 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP7内核之Reference详解
2019/03/14 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
王纯业的Python学习笔记 下载
2007/02/10 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
护理学专业推荐信
2013/12/03 职场文书
索桥的故事教学反思
2014/02/06 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
三八节标语
2014/06/27 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
换届选举主持词
2015/07/03 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书