当前位置: 首页 > 工具软件 > Blade > 使用案例 >

Laravel基础课 Blade模板引擎 简介及模板继承的使用

岑炯
2023-12-01

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+/键,在该文件中正确的注释方法是{{-- 需要注释的内容 --}}

 类似资料: