Laravel是一款基于PHP的優(yōu)秀開發(fā)框架,它具有簡(jiǎn)單易學(xué)、高效、安全等優(yōu)點(diǎn),深受WEB開發(fā)者的喜愛。其中,Laravel Blade模板布局是Laravel框架中一個(gè)十分實(shí)用的功能,本文將帶您通過(guò)實(shí)際的案例演示如何使用Laravel Blade模板布局。
什么是Blade模板布局?
Blade模板引擎是Laravel框架的默認(rèn)視圖引擎,相比PHP原生語(yǔ)法的模板引擎,Blade支持更加簡(jiǎn)潔優(yōu)雅的語(yǔ)法,可以和Laravel框架更好地配合使用。而Laravel Blade模板布局則是指將網(wǎng)頁(yè)分為頭部、尾部、側(cè)邊欄,區(qū)塊內(nèi)容等模塊化組合起來(lái),以便于實(shí)現(xiàn)分離開發(fā),提高開發(fā)效率。
- 創(chuàng)建布局主模板
在Laravel中,我們可以使用artisan命令來(lái)生成布局主模板,具體步驟如下:
php artisan make:layout master
執(zhí)行該命令后,在項(xiàng)目resources/views/layouts/目錄下會(huì)生成一個(gè)名為master.blade.php的主模板文件。打開該文件,可以看到其中的代碼內(nèi)容如下:
<!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>
登錄后復(fù)制
我們可以看到,模板文件中包含了頭部、尾部、導(dǎo)航欄、主體等不同的區(qū)塊,使用Blade模板語(yǔ)法的@yield()函數(shù)來(lái)占位,這里的@yield()函數(shù)定義了一個(gè)模板區(qū)塊,以后我們將在其他視圖文件中使用@section()函數(shù)填充這些模板區(qū)塊。
- 替換被繼承的子視圖
對(duì)于任何需要使用布局的視圖文件,都可以通過(guò)繼承主模板來(lái)進(jìn)行布局。打開視圖文件,添加如下代碼:
@extends('layouts.master')
這里的@extends(‘layouts.master’)表示當(dāng)前視圖文件繼承自主模板文件layouts.master。接下來(lái),便可以通過(guò)@yield()函數(shù)所定義的模板區(qū)塊名稱來(lái)填充這些模板區(qū)塊,比如,可以在視圖文件中添加如下代碼:
@section('title', '頁(yè)面標(biāo)題') @section('header') <h1>頭部?jī)?nèi)容</h1> @endsection @section('nav') <ul> <li><a href="#">導(dǎo)航欄1</a></li> <li><a href="#">導(dǎo)航欄2</a></li> <li><a href="#">導(dǎo)航欄3</a></li> </ul> @endsection @section('content') <p>主體內(nèi)容</p> @endsection @section('footer') <p>版權(quán)信息</p> @endsection
登錄后復(fù)制
在以上代碼中,@section()函數(shù)用于填充主模板中的模板區(qū)塊,比如,@section(‘title’, ‘頁(yè)面標(biāo)題’)用于填充主模板中的<title>標(biāo)簽。不同于標(biāo)準(zhǔn)的HTML模板中使用變量進(jìn)行填充,Blade模板允許我們繼承其他模板的部分內(nèi)容,并且使數(shù)據(jù)的分離更加明顯。
- 使用Laravel View靜態(tài)方法
除了@yield()函數(shù)和@section()函數(shù)外,Laravel還提供了View靜態(tài)方法,推薦使用這種方式,具體實(shí)現(xiàn)步驟如下:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesView; class HomeController extends Controller { public function index() { $data = [ 'title' => '頁(yè)面標(biāo)題', 'header' => '<h1>頭部?jī)?nèi)容</h1>', 'nav' => '<ul> <li><a href="#">導(dǎo)航欄1</a></li> <li><a href="#">導(dǎo)航欄2</a></li> <li><a href="#">導(dǎo)航欄3</a></li> </ul>', 'content' => '<p>主體內(nèi)容</p>', 'footer' => '<p>版權(quán)信息</p>' ]; return View::make('home.index', $data); } }
登錄后復(fù)制
以上代碼中,我們使用了View::make來(lái)生成視圖,并且傳入了一個(gè)數(shù)組實(shí)例$data作為視圖的變量上下文。在此數(shù)組中,我們定義了$title、$header、$nav、$content、$footer等5個(gè)變量,用于分別填充主模板中相應(yīng)的模板區(qū)塊。
- 使用Blade模板中的控制結(jié)構(gòu)
在Blade模板中,除了@yield()、@section()填充模板區(qū)塊,我們還可以使用控制結(jié)構(gòu),比如@if、@foreach、@for等,來(lái)實(shí)現(xiàn)特定的邏輯,具體實(shí)現(xiàn)如下:
@section('content') <div> @foreach ($posts as $post) <h2>{{ $post->title }}</h2> <p>{{ substr($post->content, 0, 100) }}</p> @endforeach </div> @endsection
登錄后復(fù)制
在該代碼中,我們使用@foreach循環(huán)語(yǔ)句來(lái)遍歷數(shù)組$posts,并借助{{ $post->title }}和{{ substr($post->content, 0, 100) }}來(lái)輸出文章標(biāo)題和簡(jiǎn)短的內(nèi)容。
總結(jié)
以上便是如何使用Laravel Blade模板布局的實(shí)際案例演示,Laravel Blade模板布局的使用,可以大大提高WEB應(yīng)用程序的開發(fā)效率,同時(shí)也使業(yè)務(wù)邏輯與視圖的分離更加明顯。當(dāng)然,除此之外,Laravel框架還有很多強(qiáng)大的功能值得探索。
以上就是Laravel開發(fā):如何使用Laravel Blade模板布局?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!