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)"color: #ff00ff">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模板引擎渲染视图就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]