您好,登錄后才能下訂單哦!
Blade模板引擎怎么在Laravel 5.1 框架中使用?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
繼承是相當(dāng)爽的,它可以從主模板繼承所有代碼,以免大量的代碼重復(fù)。這樣說比較片面,具體看眼代碼吧。
首先先創(chuàng)建一個(gè) admin/layout.blade.php:
<!DOCTYPE html> <html> <head> <title>Learn Laravel-- @yield('title')</title> </head> <body> @section('navibar') The master navigation bar @show <div class="container"> @yield('content') </div> </body> </html>
然后創(chuàng)建 admin/home.blade.php 繼承自layout:
@extends('admin.layout') @section('title') Home @endsection @section('navibar') @parent <p>增加別的代碼 不是完全覆蓋</p> @endsection @section('content') <p>Content body</p> @endsection
注冊(cè)路由 實(shí)現(xiàn)控制器方法并展示
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function (){ Route::resource('/', 'HomeController'); }); public function index() { return view('admin.home'); }
總結(jié): 好了 現(xiàn)在咱先看layout代碼 它初始定義了一個(gè)HTML簡(jiǎn)單的模板,在需要拓展的地方都加上了@yield關(guān)鍵字 這代表可填充的一塊兒代碼片段區(qū)域,而@section(navi)是聲明了一段片段 然后通過@show來展示。
然后我們創(chuàng)建了home文件,它可以繼承自layout 通過@extends() 繼承之后就可以使用@section填充layout中的@yield的了,一個(gè)yield對(duì)應(yīng)著一個(gè)section,關(guān)于layout中的@section(navi) 在home中也進(jìn)行了補(bǔ)充 因?yàn)槭褂昧薂parent關(guān)鍵字,代表著不覆蓋父模板的代碼片段 而是在父模板的代碼片段最后追加代碼,當(dāng)然啦 如果你要是去掉@parent關(guān)鍵字就會(huì)覆蓋掉。
如果這么說你還是不明白的話,打開編譯器敲一遍 看看結(jié)果就清楚了。
這也是blade相當(dāng)強(qiáng)大的地方 當(dāng)你寫了一段HTML之后呢 發(fā)現(xiàn)其中有些內(nèi)容在別的頁(yè)面下重用率很高,你完全可以把它抽出來放在另一個(gè)blade中,然后每當(dāng)你要使用這段代碼時(shí)使用@include引入就行了。
首先我們先來創(chuàng)建一個(gè) some.blade.php(至于放在哪里隨你便) :
<p>這只是一個(gè)演示 所以不浪費(fèi)時(shí)間寫太多的HTML</p>
然后在home中引用它吧:
@extends('admin.layout') @section('title') Home @endsection @section('navibar') @parent <p>增加別的代碼 不是完全覆蓋</p> @endsection @section('content') @include('admin.some') <p>Content body</p> @endsection
這段說說如何將數(shù)據(jù)傳入到一個(gè)視圖 然后將它展示到頁(yè)面上。
數(shù)據(jù)傳入有兩種種方法 先說第一種 數(shù)組方式:
public function index() { $name = 'K'; return view('admin.home', compact('name')); // 也可以這么寫 // return view('admin.home', ['name' => $name]); }
第二種方法是with方法:
public function index() { $name = 'K'; return view('admin.home')->with('name', $name); }
第一種展示方法 {{ }},用雙花括號(hào)括起來就可以展示傳入blade模板的變量,在{{ }} 里是可以使用PHP代碼的:
<p>用戶:{{ $name }}</p>
第二種展示方法{!! !!},它是不經(jīng)過htmlentities函數(shù)處理的,所以說你傳遞的數(shù)據(jù)是html數(shù)據(jù)的話 可以使用這種方法:
return view('admin.home')->with('name', '<h2>K</h2>'); <p>用戶:{!! $name !!}</p>
blade模板為了最大化使代碼簡(jiǎn)潔呢 它本身自帶了很多控制語句 這跟咱學(xué)的PHP很類似,就是if啊 foreach啊什么的
廢話不多說 實(shí)例放這你就能懂:
@if(isset($name)) <p>{{ $name }}</p> @else <p>None</p> @endif
@unless(!isset($name)) <p>{{ $name }}</p> @endunless
@for ($i = 0; $i < 10; $i++) <p>{{ $i }}</p> @endfor
{{--$names = ['k', 'l', 'i'];--}} @foreach($names as $name) <p>{{ $name }}</p> @endforeach
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。