Blade 是由 Laravel 提供的非常简单但功能强大的模板引擎,不同于其他流行的 PHP 模板引擎,Blade 在视图中并不约束你使用 PHP 原生代码。所有的 Blade 视图最终都会被编译成原生 PHP 代码并缓存起来直到被修改,这意味着对应用的性能而言 Blade 基本上是零开销。Blade 视图文件使用 .blade.php 文件扩展并存放在 resources/views 目录下。
先在 resources/views 目录下新建layouts.blade.php
<!DOCTYPE html>
<html lang="en">
<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;
clear:both;
margin-top:15px;
}
.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>
<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>
在studentcontroller.php中新建一个方法并添加好路由
public function section1()
{
$nam ='nmsl';
$arr = ['nmsl','arr2'];
$students = student::get();
return view('student.section1',[
'name'=>$nam,
'arr'=>$arr,
'students'=>$students
]);
}
在resources/views 目录下新建student文件夹,文件夹内新建section1.blade.php
@extends('layouts')
{{--模板继承 用extends('模板名')--}}
@section('header')
header
@parent{{--把父模板中的内容输出来--}}
@stop
{{--
模板重写 用section('重写部分的名字')
重写的内容
@stop
--}}
@section和@yield的区别
@section既可以单独显示父模板的默认内容,也可以单独显示子模板的新内容,通过@parent还可以同时显示父子模板中的内容
而@yield只能显示其中一个,子模板不定义,就用父模板默认的,子模板定义,父模板的内容会被覆盖,通过@parent也不能显示。
section 定义一个视图片段的
yield 展示某个指定section所表示的内容,可以想象成一个占位符,用子模板来实现它。
主要区别:yield是不可扩展的,因为它在布局中只申明定义了一个视图片段,没有任何内容。而section不仅在页面布局中定义一
个视图片段,也可以有内容,还可以被子模板扩展。
注:
以blade.php为后缀名的文件,在注释的时候,不能用快捷键Ctrl+/键,在该文件中正确的注释方法是{{-- 需要注释的内容 --}}