PHP笔记-laravel中Blade模板引擎的使用

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP笔记-laravel中Blade模板引擎的使用相关的知识,希望对你有一定的参考价值。

①Blade是Laravel提供的一个简单强大的模板引擎。

②和其他流行的php模板引擎不一样,Blade并不现在你在视图view中使用原生PHP代码。

③所有Blade视图页面都将被编译成原生PHP代码并缓存起来,除非模板文件被修改,否则不会被重写编译。

本博文主要记录了如下功能点:

@yield

@section

@extends

@stop

@parent

@include和传参

@if

@elseif

@else

@endif

@unless

@endunless

@for

@endfor

@foreach

@endforeach

@forelse

@empty

@endforelse

以及URL

程序结构如下:

路由web.php添加:

Route::prefix('student')->group(function()

	......
	......
	......

    Route::get('section1', 'StudentController@section1');
    Route::get('urlTest', 'StudentController@urlTest')->name('url');
);

url.blade.php

<a href="url('url')">url()</a>
<br/>
<a href="action('StudentController@urlTest')">action()</a>
<br/>
<a href="route('url')">route()</a>

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>

common1.php

<p>我是include $message</p>

section1.blade.php

@extends('layouts')

@section('title')
    哼哼哈嘿
@stop

@section('header')
    @parent
    header
@stop

@section('sidebar')
    @parent
    sidebar
@stop

@section('content')
    content
    <!-- 模板输出php变量 -->
    <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>

    @include('student.common1', ['message' => '我是错误信息'])
    <br/>

    @if($name == '小明')
        我是小明
    @elseif($name == '小黑')
        我是小黑
    @else
        我是谁
    @endif

    <!-- if中可以用php函数 -->
    <br/>
    @if (in_array($name, $arr))
        true
    @else
        false
    @endif

    <!-- unless的使用,属于if的取反 -->
    <br/>
    @unless($name != '小明')
        我是小明
    @endunless

    @unless($name == '小明')
        我不是小明
    @endunless

--    @for的使用--
    <br/>
    @for($i = 0; $i < 10; $i++)
        <p>$i</p>
    @endfor

--    @foreach的使用--
    <br/>
    @foreach($students as $student)
        <p>$student->name</p>
    @endforeach

--    foreach的变种forelse--
    @forelse($students as $student)
        <p>$student->name</p>
    @empty
        <p>null</p>
    @endforelse

@stop

StudentController.php关键代码如下:

<?php


namespace App\\Http\\Controllers;


use App\\Student;
use Illuminate\\Support\\Facades\\DB;

class StudentController extends Controller

    ......
    ......

    public function section1()

        $students = Student::get();

        $name = '小明';
        $arr = ['小白', '小黑'];
        return view('student.section1', [
            'name' => $name,
            'arr' => $arr,
            'students' => $students
        ]);
    

    public function urlTest()

        return view("url");
    

 

以上是关于PHP笔记-laravel中Blade模板引擎的使用的主要内容,如果未能解决你的问题,请参考以下文章

laravel-模板引擎Blade

Laravel Blade 模板引擎会影响性能吗?

laravel Blade 模板引擎

请教laravel view 怎么显示 controller 中传递的对象值

Laravel 5.1 Blade模板引擎

为 Blade 模板引擎添加新文件扩展名