laravel基础学习笔记--Blade 模板
laravel基础学习笔记–Blade 模板
Blade 视图文件都将被编译成原生的 PHP 代码并缓存起来,除非它被修改,否则不会重新编译,这就意味着 Blade
基本上不会给你的应用增加任何负担。
Blade模板
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
sidebar里面的内容
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
//@section 和 @yield 和指令。如同 section 的意思,一个片段,
//@section 指令定义了片段的内容,
// 而 @yield 指令则用来显示片段的内容。
@section 指令定义了片段的内容,
@yield 指令则用来显示片段的内容。
@show指令是在定义布局的同时显示出来
继承布局
@extends('layouts.app')//继承blade模板文件,不需要后缀
@section('title', 'Page Title')//@section向布局片段注入内容
@section('sidebar')
@parent
//@parent 指令向布局的 sidebar 追加(而非覆盖)内容
//@parent 指令将被布局中的内容替换。
//如果没有@parent这个指令,那么子模板就会覆盖父模板的内容
<p>向sidebar追加的内容</p>
@endsection
@section('content')
<p>我是被注入的内容</p>
@endsection
//@endsection 指令仅定义了一个片段, @show 则在定义的同时 立即 yield 这个片段。
@yield 指令还接受一个默认值作为第二个参数。如果被 「yield」的片段未定义,则该默认值被渲染
@yield('title','我是标题')
在blade中使用从路由传递的变量
比如,定义一个路由的同时传递一个变量
Route::get('/child', function () {
return view('child', ['name' => '小信']);
});
使用传递过来的变量
{{$name}}
其实,blade的{{}}括号,不单单可以解析PHP变量,也支持PHP函数
{{time()}}
{{}}括号会默认转义,如果不想被转义,就可以使用{{!! !!}}
{{!!$script!!}}
有时候,为了初始化一个 JavaScript 变量,您可能会向视图传递一个数组并将其渲染成 JSON
<script>
var json = @json($json);
console.log(json);
</script>
if语句
@if(count($json)===1)
数组的元素是一个
@elseif(count($json)>1)
数组元素大于一个
@else
else语句
@endif
鉴权指令
@auth 和 @guest 指令可用于快速判断当前用户是否已经获得授权或是当前用户是游客
@auth
<p>已登录</p>
@endauth
@guest
<p>未登录</p>
@endguest
还可以把参数写进去
@auth('admin')
// 用户已经通过认证
@endauth
@guest('admin')
// 用户没有通过认证……
@endguest
Loop变量
循环时,循环内部可以使用 $loop 变量。该变量提供了访问一些诸如当前的循环索引和此次迭代是首次或是末次这样的信息的方式:
@foreach($json as $v)
@if($loop->first)
首个元素
@endif
@if($loop->last)
最后一个元素
@endif
<p>元素值:{{ $v }}</p>
@endforeach
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!