layout | title | date | author | desc | in_head |
---|---|---|---|---|---|
post
|
Blade 模板引擎常用语法
|
2017-12-25 09:00:02 +0800
|
南丞
|
Blade是Laravel提供的一个既简单又强大的模板引擎,Blade允许在视图中使用原生php代码,所有Blade视图页面都将被编译成原生php代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译。
|
<style> .article-content p{ text-indent: 2em; line-height: 1.75rem; }</style>
|
blade 模板引擎常用语法
1.模板继承
<html lang="en">
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
@p('head')
<link rel="stylesheet" href="style.css" />
@show
</head>
<body>
@yield('body')
@p('message')
@parent
<p>parent message.</p>
@show
</body>
</html>
<!-- app/views/home.blade.php -->
@extends('layouts.base')
@p('head')
<link rel="stylesheet" href="another.css" />
@endp
@p('body')
<h1>Hurray!</h1>
<p>We have a template!</p>
@stop
@p('message')
@parent
<p>Fourth</p>
@stop
2. 输出数据
//直接输出变量
{ { $name } }
//输出带有html的字符串并解析
{ !! $links !! }
//原样输出
@{ { name } } //输出的结果是 { { name } }
注意:Blade { { } } 声明中的内容是自动通过 PHP 的 htmlentities 方法过滤的
3. 三元运算符
{ { isset($name) ? $name : 'Default' } }
{ { $name or 'Default' } }
4.if语句
@if ($something == '1')
<p>1</p>
@elseif ($something == '2')
<p>2</p>
@else
<p>3</p>
@endif
@unless (true|false)
You are not signed in.
@endunless
//@hasSection 指令来判断提供给布局的挂件是否包含了内容
@hasSection('demo')
dd
@else
App Name
@endif
5.循环
Blade 也提供了一些简单指令来支持 PHP 的循环结构。
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
<p>This is user { { $user->id } }</p>
@endforeach
@forelse ($users as $user)
<li>{ { $user->name } }</li>
@empty
<p>No users</p>
@endforelse
@while (true)
<p>I'm looping forever.</p>
@endwhile
Blade 也提供了终止迭代或取消当前迭代的指令:
@foreach ($users as $user)
@if($user->type == 1)
@continue
@endif
<li>{ { $user->name } }</li>
@if($user->number == 5)
@break
@endif
@endforeach
@foreach ($users as $user)
@continue($user->type == 1)
<li>{{ $user->name }}</li>
@break($user->number == 5)
@endforeach
6.模板注释
{ {-- This is a pretty, and secret Blade comment. --} }
7.包含视图
@include('view.name')
@include('view.name', ['some' => 'data'])
@each('view.name', $jobs, 'job')
//@each 第一个参数是数组或集合中每个元素需要被渲染的视图名称。
//@each 第二个参数是一个数组或集合,被用来提供迭代。
//@each 第三个参数是要分配给当前视图的变量名
//@each 第四个参数到 @each 指令。如果所提供的数组是空数组的话,该参数所提供的视图将会被引入
Blade 已有的基础模板上加入新的内容
@push('scripts')
<script src="/example.js"></script>
@endpush
//使用这个
<head>
<!-- Head Contents -->
@stack('scripts')
</head>
8.使用php自带的函数
{ !! join(', ', $post->tagLinks()) !! }
{ { $time|date('Ymd') } }