Blade模板引擎介绍
- Blade是一个Laravel提供的一个既简单有强大的模板引擎
- 和其他流行的PHP模板引擎不一样,Blade并不限制你在视图(view)中使用原生php代码
- 所有Blade视图页面都将被编译成原生php代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译
模板继承:section,yield,extends, partent
demo模板文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>轻松学会Laravel - @yield('title')</title>
<style>
.header {
width: 1000px;
height: 150px;
margin: 0 auto;
background: #f5f5f5;
border: 1px solid #ddd;
}
.main {
width: 1000px;
height: 300px;
margin: 0 auto;
margin-top: 15px;
clear: both;
}
.main .sidebar {
float: left;
width: 20%;
height: inherit;
background: #f5f5f5;
border: 1px solid #ddd;
}
.main .content {
float: right;
width: 75%;
height: inherit;
background: #f5f5f5;
border: 1px solid #ddd;
}
.footer {
width: 1000px;
height: 150px;
margin: 0 auto;
margin-top: 15px;
background: #f5f5f5;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<div class="header">
@section('header')
头部
@show
</div>
<div class="main">
<div class="sidebar">
@section('sidebar')
侧边栏
@show
</div>
<div class="content">
@yield('content') //这里的文件是你在其他视图自定义的
主要内容区域
</div>
</div>
<div class="footer">
@section('footer')
底部
@show
</div>
</body>
</html>
模板文件继承:
@extends('layouts')
@section('header')
@parent
header重写
@stop
@section('sidebar')
@parent
siderbar重写
@stop
@section('content') //在模板中可以用yield输出
xxxxx
@stop
模板中输出变量
<p>{{ $name }}</p>
模板中调用php代码
<p>{{time()}}</p>
<p>{{date('Y-m-d H:i:s', time())}}</p>
<p>{{ in_array($name, $arr) ? 'true':'false' }}</p>
<p>{{var_dump($arr)}}</p>
<p>{{ isset($name) ? $name : 'default' }}</p>
<p>{{ $name or 'default' }}</p><!-- 短语法,这个和上面相同 -->
上述操作的控制器部分代码
public function section1()
{
$name = 'sean';
$arr = [
'sean',
'imooc'
];
return view('student.section1', [
'name' => $name,
'arr' => $arr
]);
}
若要原样输出,使用@符
<p>@{{ $name }}</p>
模板中的注释
{{--这里的注释在浏览器看不到--}}
引入子视图include的使用
@include('student.common1',['msg' => '我是错误信息!'])
并在子视图中输出变量
<p>我是include{{ $msg }}</p>
if…else…
<br>
@if ($name == 'sean1')
i'm sean
@elseif($name == 'imooc')
i'm imooc
@else
Who am I
@endif
<br>
if中也可以用php函数
@if(in_array($name, $arr))
true
@else
false
@endif
unless 相当于if的取反
@unless($name != 'sean')
I'm sean
@endunless
for循环
@for ($i = 0; $i < 10; $i++)
<p>{{ $i }}</p>
@endfor
foreach
@foreach($students as $student)
<p>{{ $student->name }}</p>
@endforeach
forelse…empty…(没有数据时的处理操作)
@forelse($students as $students)
<p>{{ $students->name }}</p>
@empty
<p>null</p>
@endforelse
模板中的URL(通常只用url和route)
url() //通过路由的名称生成url
<a href="{{url('url')}}">url()</a>
action() //通过指定控制器和方法名生成url
<a href="{{ action('StudentController@urlTest') }}">action()</a>
route() //通过路由的别名生成url
<a href="{{route('url')}}">route()</a>