Laravel開(kāi)發(fā):如何使用Laravel Blade模板布局?

laravel是一款基于php的優(yōu)秀開(kāi)發(fā)框架,它具有簡(jiǎn)單易學(xué)、高效、安全等優(yōu)點(diǎn),深受web開(kāi)發(fā)者的喜愛(ài)。其中,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)分離開(kāi)發(fā),提高開(kāi)發(fā)效率。

  1. 創(chuàng)建布局主模板

在Laravel中,我們可以使用artisan命令來(lái)生成布局主模板,具體步驟如下:

php artisan make:layout master

執(zhí)行該命令后,在項(xiàng)目resources/views/layouts/目錄下會(huì)生成一個(gè)名為master.blade.php的主模板文件。打開(kāi)該文件,可以看到其中的代碼內(nèi)容如下:

       <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><header>         @yield('header')     </header><nav>         @yield('nav')     </nav><main>         @yield('content')     </main><footer>         @yield('footer')     </footer>

我們可以看到,模板文件中包含了頭部、尾部、導(dǎo)航欄、主體等不同的區(qū)塊,使用Blade模板語(yǔ)法的@yield()函數(shù)來(lái)占位,這里的@yield()函數(shù)定義了一個(gè)模板區(qū)塊,以后我們將在其他視圖文件中使用@section()函數(shù)填充這些模板區(qū)塊。

  1. 替換被繼承的子視圖

對(duì)于任何需要使用布局的視圖文件,都可以通過(guò)繼承主模板來(lái)進(jìn)行布局。打開(kāi)視圖文件,添加如下代碼:

@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')     

@endsection @section(‘content’)

主體內(nèi)容

@endsection @section(‘footer’)

版權(quán)信息

@endsection

在以上代碼中,@section()函數(shù)用于填充主模板中的模板區(qū)塊,比如,@section(‘title’, ‘頁(yè)面標(biāo)題’)用于填充主模板中的

標(biāo)簽。不同于標(biāo)準(zhǔn)的<a href="http://m.babyishan.com/tag/html"><b>html</b></a>模板中使用變量進(jìn)行填充,Blade模板允許我們繼承其他模板的部分內(nèi)容,并且使數(shù)據(jù)的分離更加明顯。</p> <ol start="3"> <li>使用Laravel View靜態(tài)方法</li> </ol> <p>除了@yield()函數(shù)和@section()函數(shù)外,Laravel還提供了View靜態(tài)方法,推薦使用這種方式,具體實(shí)現(xiàn)步驟如下:</p> <div style="position:relative; padding:0px; margin:0px;"> <pre> <?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesView; class HomeController extends Controller { public function index() { $data = [ 'title' => '頁(yè)面標(biāo)題', 'header' =&gt; '<h1>頭部?jī)?nèi)容</h1>', 'nav' =&gt; '</pre> <div></div> </div> <ul> <li><a href="http://m.babyishan.com/?golink=aHR0cHM6Ly93d3cucGhwLmNuL2ZhcS8j" >導(dǎo)航欄1</a></li> <li><a href="http://m.babyishan.com/?golink=aHR0cHM6Ly93d3cucGhwLmNuL2ZhcS8j" >導(dǎo)航欄2</a></li> <li><a href="http://m.babyishan.com/?golink=aHR0cHM6Ly93d3cucGhwLmNuL2ZhcS8j" >導(dǎo)航欄3</a></li> </ul> <p>‘, ‘content’ => ‘</p> <p>主體內(nèi)容</p> <p>‘, ‘footer’ => ‘</p> <p>版權(quán)信息</p> <p>‘ ]; return View::make(‘home.index’, $data); } }</p> <p>以上代碼中,我們使用了View::make來(lái)生成視圖,并且傳入了一個(gè)數(shù)組實(shí)例$data作為視圖的變量上下文。在此數(shù)組中,我們定義了$title、$header、$nav、$content、$footer等5個(gè)變量,用于分別填充主模板中相應(yīng)的模板區(qū)塊。</p> <ol start="4"> <li>使用Blade模板中的控制結(jié)構(gòu)</li> </ol> <p>在Blade模板中,除了@yield()、@section()填充模板區(qū)塊,我們還可以使用控制結(jié)構(gòu),比如@<a href="http://m.babyishan.com/tag/if"><b>if</b></a>、@<a href="http://m.babyishan.com/tag/for"><b>for</b></a>each、@for等,來(lái)實(shí)現(xiàn)特定的邏輯,具體實(shí)現(xiàn)如下:</p> <div style="position:relative; padding:0px; margin:0px;"> <pre>@section('content') <div> @<a href="http://m.babyishan.com/tag/foreach"><b>foreach</b></a> ($posts as $post) <h2>{{ $post-&gt;title }}</h2> <p>{{ substr($post-&gt;content, 0, 100) }}</p> @endforeach </div> @endsection</pre> <div></div> </div> <p>在該代碼中,我們使用@foreach<a href="http://m.babyishan.com/tag/%e5%be%aa%e7%8e%af"><b>循環(huán)</b></a>語(yǔ)句來(lái)遍歷數(shù)組$posts,并借助{{ $post->title }}和{{ substr($post->content, 0, 100) }}來(lái)輸出文章標(biāo)題和簡(jiǎn)短的內(nèi)容。</p> <p>總結(jié)</p> <p>以上便是如何使用Laravel Blade模板布局的實(shí)際案例演示,Laravel Blade模板布局的使用,可以大大提高WEB應(yīng)用程序的開(kāi)發(fā)效率,同時(shí)也使業(yè)務(wù)邏輯與視圖的分離更加明顯。當(dāng)然,除此之外,Laravel框架還有很多強(qiáng)大的功能值得探索。</p> <p>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享