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新手上路(十三)
Oct 09 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
微信API接口大全
Apr 15 PHP
php关联数组快速排序的方法
Apr 17 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
php中strtotime函数性能分析
Nov 20 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
2019史上最全Database工程师题库
2015/12/06 面试题
劳动竞赛活动方案
2014/02/20 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
安全月宣传标语
2014/10/07 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
mysql主从复制的实现步骤
2021/10/24 MySQL