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 学习路线与时间表
Feb 21 PHP
php 短链接算法收集与分析
Dec 30 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
php实现倒计时效果
Dec 19 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP中关于php.ini参数优化详解
Feb 28 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导入模块文件分享
2015/03/17 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python字符串的方法与操作大全
2018/01/30 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
经管应届生求职信
2013/11/17 职场文书
教师实习自我鉴定
2013/12/14 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书