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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP开发框架总结收藏
Apr 24 PHP
php 特殊字符处理函数
Sep 05 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
PHP中使用BigMap实例
Mar 30 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 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
德生H-501的评价与改造
2021/03/02 无线电
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
PHP用mysql数据库存储session的代码
2010/03/05 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
JS去掉字符串中所有的逗号
2017/10/18 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
简单使用Python自动生成文章
2014/12/25 Python
Python实现的科学计算器功能示例
2017/08/04 Python
python实现八大排序算法(2)
2017/09/14 Python
python manage.py runserver流程解析
2019/11/08 Python
python文件及目录操作代码汇总
2020/07/08 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
老师给学生的表扬信
2014/01/17 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
先进学校事迹材料
2014/12/30 职场文书
同意离婚答辩状
2015/05/22 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL