首頁 >php框架 >Laravel >Laravel開發:如何使用Laravel Blade模板佈局?

Laravel開發:如何使用Laravel Blade模板佈局?

WBOY
WBOY原創
2023-06-14 10:41:191023瀏覽

Laravel是一款基於PHP的優秀開發框架,它具有簡單易學、高效、安全等優點,深受WEB開發者的喜愛。其中,Laravel Blade模板佈局是Laravel框架中一個十分實用的功能,本文將帶您透過實際的案例演示如何使用Laravel Blade模板佈局。

什麼是Blade模板佈局?

Blade模板引擎是Laravel框架的預設視圖引擎,相比PHP原生語法的模板引擎,Blade支援更簡潔優雅的語法,可以和Laravel框架更好地配合使用。而Laravel Blade模板佈局則是指將網頁分為頭部、尾部、側邊欄,區塊內容等模組化組合起來,以便於實現分離開發,提高開發效率。

  1. 建立佈局主模板

在Laravel中,我們可以使用artisan指令來產生佈局主模板,具體步驟如下:

php artisan make:layout master

執行指令後,在專案resources/views/layouts/目錄下會產生一個名為master.blade.php的主範本檔案。打開該文件,可以看到其中的程式碼內容如下:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>@yield('title')</title>
</head>
<body>
    <header>
        @yield('header')
    </header>
    <nav>
        @yield('nav')
    </nav>
    <main>
        @yield('content')
    </main>
    <footer>
        @yield('footer')
    </footer>
</body>
</html>

我們可以看到,模板文件中包含了頭部、尾部、導航欄、主體等不同的區塊,使用Blade模板語法的@yield()函數來佔位,這裡的@yield()函數定義了一個模板區塊,以後我們將在其他視圖文件中使用@section()函數填充這些模板區塊。

  1. 取代被繼承的子視圖

對於任何需要使用佈局的視圖文件,都可以透過繼承主模板來進行佈局。開啟視圖文件,新增以下程式碼:

@extends('layouts.master')

這裡的@extends('layouts.master')表示目前檢視文件繼承自主模板檔案layouts.master。接下來,便可以透過@yield()函數所定義的模板區塊名稱來填充這些模板區塊,例如,可以在視圖文件中添加如下程式碼:

@section('title', '页面标题')
@section('header')
    <h1>头部内容</h1>
@endsection
@section('nav')
    <ul>
        <li><a href="#">导航栏1</a></li>
        <li><a href="#">导航栏2</a></li>
        <li><a href="#">导航栏3</a></li>
    </ul>
@endsection
@section('content')
    <p>主体内容</p>
@endsection
@section('footer')
    <p>版权信息</p>
@endsection

在以上程式碼中,@section ()函數用於填充主模板中的模板區塊,例如,@section('title', '頁面標題')用於填充主模板中的b2386ffb911b14667cb8f0f91ea547a7標籤。不同於標準的HTML模板中使用變數進行填充,Blade模板允許我們繼承其他模板的部分內容,並且使資料的分離更加明顯。

  1. 使用Laravel View靜態方法

除了@yield()函數和@section()函數外,Laravel還提供了View靜態方法,建議使用這種方式,具體實作步驟如下:

    <?php

    namespace AppHttpControllers;

    use IlluminateHttpRequest;
    use IlluminateSupportFacadesView;

    class HomeController extends Controller
    {
        public function index()
        {
            $data = [
                'title' => '页面标题',
                'header' => '<h1>头部内容</h1>',
                'nav' => '<ul>
                            <li><a href="#">导航栏1</a></li>
                            <li><a href="#">导航栏2</a></li>
                            <li><a href="#">导航栏3</a></li>
                          </ul>',
                'content' => '<p>主体内容</p>',
                'footer' => '<p>版权信息</p>'
            ];
            return View::make('home.index', $data);
        }
    }

以上程式碼中,我們使用了View::make來產生視圖,並且傳入了一個陣列實例$data作為視圖的變數上下文。在此數組中,我們定義了$title、$header、$nav、$content、$footer等5個變量,用於分別填入主模板中對應的模板區塊。

  1. 使用Blade模板中的控制結構

在Blade模板中,除了@yield()、@section()填充模板區塊,我們還可以使用控制結構,如@if、@foreach、@for等,來實現特定的邏輯,具體實現如下:

@section('content')
    <div>
        @foreach ($posts as $post)
            <h2>{{ $post->title }}</h2>
            <p>{{ substr($post->content, 0, 100) }}</p>
        @endforeach
    </div>
@endsection

在該程式碼中,我們使用@foreach循環語句來遍歷數組$posts,並藉助{ { $post->title }}和{{ substr($post->content, 0, 100) }}來輸出文章標題和簡短的內容。

總結

以上便是如何使用Laravel Blade模板佈局的實際案例演示,Laravel Blade模板佈局的使用,可以大大提高WEB應用程式的開發效率,同時也使業務邏輯與視圖的分離更加明顯。當然,除此之外,Laravel框架還有很多強大的功能值得探索。

以上是Laravel開發:如何使用Laravel Blade模板佈局?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn