Laravel实现通过blade模板引擎渲染视图


Posted in PHP onOctober 25, 2019

laravel提供了blade模板引擎用于视图的渲染,在blade中可以直接使用PHP代码,并且blade最终也会被编译为php缓存起来,只有在blade文件被修改后才会重新编译,这一点可以节省开销提高应用性能。blade文件.blade.php作为视图文件存放于laravel的resource/views目录下。

1、定义模板

blade定义模板页面同创建html页面一样,只不过在适当的位置通过@section或@yield来占位,当其它页面引用模板页时将内容填充到占位的位置即可

<html>
 <head>
  <title>@yield('title')</title>
 </head>
 <body>
  <header class="header">
   @section('header')
    这是头部<br>
   @show
  </header>
  <div class="middle">
   <aside class="aside">
    这是侧边栏
    @yield('aside')
   </aside>
   <div class="content">
    @section('content')
    这是主体内容
    @show
   </div>
  </div>
  <footer class="footer">
   这是底部
   @yield('footer')
  </footer>
 </body>
</html>

section与yield都是占位符,其区别体现在引用模板时,当使用yield时会完全将指定的占位符替换掉,而使用section时可以通过@parent来保留@section()~@show之间的内容。

如果需要在blade中引入外部js、css文件可以采用相对public目录的绝对路径,例如引入自带的bootstrap,位于public/css/app.css,可以<link rel="stylesheet" href="{{ asset('./css/app.css')}}" rel="external nofollow" >

2、引用模板

引用模板首先需要通过@extends()引入你需要使用的模板,模板位置相对于views目录。然后通过@section()~@stop(注意与定义模板时的@section~@show区别),将你所需要替换的内容填充到模板的指定位置,例如要填充header对应的section:

@extends('template.layout')  {{--引入模板views/template/layout.blade.php--}}

@section('title')

登录界面

@stop

@section('header')    {{--填充到header对应的占位符--}}

@parent      {{--保留模板原内容--}}

头部替换内容

@stop

引入组件:通过@component来引入组件模板。比如定义了一个通用的错误提示组件alert:

<div style="color: #ff5b5d;">
 <h5>{{$title}}</h5>
 {{$slot}}
</div>

在页面中使用该组件:

@component('template.alert') {{--引入组件views/template/alert.blade.php--}}
 @slot('title')    {{--指定替代组件中的$title位置--}}
  alert标题
 @endslot
 alert组件内容
@endcomponent

@component~@endcomponent之间的内容会自动替代组件{{$slot}},如果要指定替代的位置,可以通过@slot()~@endslot

引入子视图:在一个页面中如果希望引入一个blade子视图,可以通过@include()

@include('template.child')

在blade中输出变量通过{{$var}},其中的语句已经经过 PHP 的 htmlentities 函数处理以避免 XSS 攻击。例如在controller中引入view时传入变量参数:

public static function showBlade(){
 return view('Login.login',['var'=>'test']);
}

在blade中使用该变量

变量为:{{isset($var)? $var : '默认值'}}

有时候我们希望blade不要对文本进行解析,原样输出,比如在vue中也使用{{}}包裹变量,我们不希望blade对其进行编译,这时可以使用@:

原文本输出:@{{ $var }}

3、流程控制

blade提供了一套流程控制语句来对页面的渲染进行控制,使页面的渲染更为快捷,并且这些控制语句都是和PHP非常类似的。

if判断:

@if ($val >80)
 优秀
@elseif ($val>60)
 及格
@else
 不及格
@endif

循环:

@for ($i = 0; $i < 10; $i++)
 The current value is {{ $i }}
@endfor
 
@foreach ($users as $user)
 <p>This is user {{ $user->id }}</p>
@endforeach

switch分支:

@switch($i)
 @case(1)
  First case...
  @break
 
 @case(2)
  Second case...
  @break
 
 @default
  Default case...
@endswitch

认证:@auth 和 @guest 指令可用于快速判断当前用户是否登录:

@auth
 // 用户已登录...
@endauth
 
@guest
 // 用户未登录...
@endguest

以上这篇Laravel实现通过blade模板引擎渲染视图就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
怎样在PHP中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
php调整服务器时间的方法
Apr 03 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel 解决Validator使用中出现的问题
Oct 25 #PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 #PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 #PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 #PHP
Laravel validate error处理,ajax,json示例
Oct 25 #PHP
laravel 错误处理,接口错误返回json代码
Oct 25 #PHP
laravel 实现用户登录注销并限制功能
Oct 24 #PHP
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
学校火灾防控方案
2014/06/09 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2015最新民情日记范文
2015/06/26 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
Django显示可视化图表的实践
2021/05/10 Python
python编写五子棋游戏
2021/05/25 Python
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript