今天小编就为大家分享一篇Laravel实现通过blade模板引擎渲染视图,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
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模板引擎渲染视图就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程学习网。
本文标题为:Laravel实现通过blade模板引擎渲染视图
基础教程推荐
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- PHP中的错误及其处理机制 2023-06-04
- php array分组,PHP中array数组的分组排序 2022-08-01
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- 使用PHP开发留言板功能 2023-03-13
- PHP命名空间简单用法示例 2022-12-01
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08