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 相关文章推荐
Joomla下利用configuration.php存储简单数据
May 19 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
php双层循环(九九乘法表)
Oct 23 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
php支付宝APP支付功能
Jul 29 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
PHP 实现缩略图
Mar 09 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
精通php的十大要点(上)
2009/02/04 PHP
php计算十二星座的函数代码
2012/08/21 PHP
smarty简单分页的实现方法
2014/10/27 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
php实现简易计算器
2020/08/28 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
django缓存配置的几种方法详解
2018/07/16 Python
Django REST framework 分页的实现代码
2019/06/19 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
解析Python3中的Import
2019/10/13 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
经贸韩语专业大学生职业规划
2014/02/14 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
黄埔军校观后感
2015/06/10 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android