天天看點

laravel(六)-Blade模闆Blade模闆

  • Blade模闆
    • 簡介
    • 模闆繼承
    • 詳細使用

Blade模闆

簡介

Blade 是 Laravel 提供的一個非常簡單、強大的模闆引擎,Blade 在視圖中不限制 PHP 原生代碼。所有的 Blade 視圖都會被編譯成原生 PHP 代碼并緩存起來直到被修改,這意味着對應用的性能而言 Blade 基本上是零開銷。Blade 視圖檔案使用 .blade.php 檔案擴充,預設存放在 resources/views 目錄下。

模闆繼承

  • section 定義了一個内容的片段
  • yield 用于顯示給定片段的内容
  • extends 指定子頁面所繼承的布局
  • parent @parent 指令在視圖渲染時将會被布局中的内容替換 ,可了解為類中調用父類方法的parent::action();

詳細使用

<!--layout.blade.php 布局-->
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>@yield('title','預設值')</title>
</head>
<style>
    header,footer {
        width: %;
        height: px;
        background-color: khaki;
    }
    aside {
        float: left;
        width: %;
        margin-left: %;
        height: px;
        background-color: lavenderblush;
    }
    .clear {
        display: block;
        height: ;
        width: %;
        clear: both;
    }
</style>
<body>
    <header>頭部@yield('header','預設值')</header>
    <aside class="left">
        @section('left-aside')
            左側
            {{ $title }}
        @show
    </aside>
    <aside class="right">
        @section('right-aside')
            右側
        @show
    </aside>
    <div class="clear"></div>
    <footer>
        @section('footer')
            尾部
        @show
    </footer>
</body>
</html>
           
<!--nav.blade.php 獨立出來的元件,供include指令調用-->
<nav>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>使用變量{{ $title }}</li>
    </ul>
</nav>
           
<!--son.blade.php 模闆 繼承自layout-->
{{--繼承layout檔案--}}
@extends('layout')

{{--重寫title塊--}}
@section('title')
    {{--1. 輸出變量--}}
    {{ $title }}
@stop

@section('header')
    header2
    <h3>模闆中生成url</h3>
    <ol>
        <li>url 通過路由名稱生成url {{ url('/nice') }}</li>
        <li>action 通過控制器及方法生成url {{ action('Member\IndexController@index') }}</li>
        <li>route 通過路由别名生成url {{ route('niceas') }}</li>
    </ol>
@stop

@section('left-aside')
    重寫父模闆内容
@stop

@section('right-aside')
    @parent
    繼承父模闆内容并追加内容

    {{--1. 輸出變量--}}
    {{ $title }}

    {{--2. 使用PHP代碼--}}
    {{ time() }}

    {{ var_dump($title) }}

    {{--下面兩種三元表達式等價--}}
    {{ isset($header) ? $header : '預設值' }}
    {{ $header or '預設值' }}

    {{--3. 原樣輸出--}}
    @{{ $title }}

    {{--4. Blade 還允許你在視圖中定義注釋,然而,不同于 HTML 注釋,Blade 注釋并不會包含到 HTML 中被傳回--}}

    {{--5. 引入子視圖--}}
    @include('nav')

    {{--6. 流程控制--}}
    <!-- if-else -->
    @if(1 > 1)
        1不等于0
    @elseif(1 < 1)
        1不等于2
    @else
        1等于1
    @endif

    <!-- 相當于if取反 -->
    @unless(1!=1)
        輸出
    @endunless

    <!-- for -->
    @for($i = 1;$i<10;$i++)
        {{ $i }}
    @endfor

    <!-- foreach -->
    @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 -->
    @while ($i>0)
        <p>I'm looping forever.{{ $i }}</p>
        {{ $i-- }}
    @endwhile
@endsection