Laravel之Blade模板引擎
Blade是Laravel提供的一個既簡單又強大的模板引擎,Blade允許在檢視中使用原生php程式碼,所有Blade檢視頁面都將被編譯成原生php程式碼並快取起來,除非你的模板檔案被修改了,否則不會重新編譯。
1.模板繼承
一個網站,往往很多介面有相同的區塊,比如導航欄,底部欄,頂部欄。這些介面只有主內容區域不一樣。為了提高程式碼的複用性,我們可以將這些相同的區塊放在佈局模板裡,然後讓其它模板去繼承它,其它模板稱為子模板。這樣一來,子模板就可以輕鬆獲得與佈局模板一樣的內容。而且,子模板還可以做適當的修改。
在resources->views目錄下新建一個模板layouts.blade.php。佈局模板。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>輕鬆學會Laravel - @yield('title')</title> <style> .header { width: 1000px; height: 150px; margin:0 auto; background: #f5f5f5; border: 1px solid #ddd; } .main { width: 1000px; height: 300px; margin:0 auto; margin-top: 15px; clear: both; } .main .sidebar { float: left; width: 20%; height: inherit; background: #f5f5f5; border: 1px solid #ddd; } .main .content { float: right; width: 75%; height: inherit; background: #f5f5f5; border: 1px solid #ddd; } .footer { width: 1000px; height: 150px; margin:0 auto; margin-top: 15px; background: #f5f5f5; border: 1px solid #ddd; } </style> </head> <body> <div class="header"> @section('header') 頭部 @show </div> <div class="main"> <div class="sidebar"> @section('sidebar') 側邊欄 @show </div> <div class="content"> @yield('content','主要內容區域') </div> </div> <div class="footer"> @section('footer') 底部 @show </div> </body> </html>
解讀:
@section('header') 模板的一部分。子模板可以繼承,可以改變內容。
@yield('title') 模板的一部分。子模板可以繼承,可以改變內容。
@yield('content',主要內容區域) 模板的一部分。子模板可以繼承,可以改變內容,有預設值。
然後在當前目錄下新建一個目錄student,在裡面寫section1.blade.php,子模板。
子模板如果要對公共模板的內容做修改,則使用@section 和@stop配對。裡面寫子模板自己的內容。@extends('layouts') //繼承公共模板,如果公共模板在views下,則直接寫模板的名稱 @section('header') //對header重寫,要@section('header') 和@stop配對使用 @parent //此句把父模板的內容的header部分也輸出來 重寫頭部 @stop @section('content') // 重寫yield,和section一樣 重寫yield裡的內容 @stop
然後在student控制器裡新增一個方法,
public function test4(){
/*模板繼承*/
return view('student/section1');
}
配置好路由:Route::get('test4',['uses'=>'[email protected]']);
2.基礎語法及inude的使用
(1)模板中輸出php變數
在控制器裡寫:
public function test4(){
$name='zls';
return view('student/section1',['name'=>$name]);
}
模板section1.blade.php裡寫:
<p>{{$name}}</p> //這樣就能輸出了
(2)模板裡呼叫php程式碼
和原生的php沒有很大的區別,只是將php的標籤換成了{{}}而已,其它都一樣。
介紹一個短語法:
<p>{{$name or 'empty'}}</p> 若 $name存在則輸出$name,否則輸出’empty’.
(3)原樣輸出,加@符,這樣{{}}裡的程式碼就不會解析了
<p>@{{$name or 'empty'}}</p>
(4)模板中的註釋。使用 {{-- --}}。
{{-- 模板中的註釋 --}}
發現這個註釋檢視源裡不顯示
(5)引入子檢視include
在student目錄下新建一個common檢視,寫:<p>我是include</p>.
然後在section1視圖裡寫:@include('student.common')
@include(‘目錄名/檢視名’)
當然也可以向子檢視傳值:
在common視圖裡寫:<p>我是include{{$message}}</p>.
然後在section1視圖裡寫:@include('student.common',['message'=>'我是錯誤資訊'])
2.流程控制
(1)<!--if語句-->
使用@符號,並且要有開始和結束標籤
@if($name=='zls')
is zls
@elseif($name=='imooc')
is imooc
@else
not
@endif
另外if條件裡面也是可以用函式的: @if(isset($name))
(2)<!--unless語句--> 是if的取反
@unless($name=='zls')
@unless
(3) <!--for語句-->
@for ($i=0;$i<5;$i++)
<p>{{$i}}</p>
@endfor
(4)<!--foreach語句-->
在student控制器裡寫:
public function test4(){
/*模板繼承*/
$name='zls';
$students=Student::get();
return view('student/section1',['name'=>$name,'students'=>$students]);
}
模板裡寫:
@foreach ($students as $student)
<p>{{$student->vip_name}}</p>
@endforeach
(5)<!--forelse語句-->
@forelse ($students as $student)
<p>{{$student->vip_name}}</p>
@empty
<p>null</p>
@endforelse
和foreach一樣,只是當陣列為空時,會輸出null
3.模板中的URL
有3種方式生成url。
url() 路由的方式(這個最簡單)
action() 控制器名+方法名
route() 路由別名的方式
具體操作:
在student控制器裡新增一個test5方法,用來測試
public function test5(){
echo "你跳轉到了test5";
}
在section1模板裡寫:
<a href="{{url('test5')}}">url()點選跳轉到test5裡(路由方式)</a>
<a href="{{action('[email protected]')}}">action() 點選跳轉到test5裡(控制器名@方法名方式)</a>
<a href="{{route('url')}}">route()點選跳轉到test5裡( 路由別名方式)</a>
路由配置:Route::get('test5',['as'=>'url','uses'=>'[email protected]']);
Url訪問laravel/public/test4
相關推薦
Laravel之Blade模板引擎
Blade是Laravel提供的一個既簡單又強大的模板引擎,Blade允許在檢視中使用原生php程式碼,所有Blade檢視頁面都將被編譯成原生php程式碼並快取起來,除非你的模板檔案被修改了,否則不會重新編譯。 1.模板繼承 一個網站,往往很多介面有相同的區塊,比如導航欄
PHP模板引擎Smarty(三)深入淺出之Smarty模板引擎工作機制(二)
轉自:http://www.cnblogs.com/hongfei/archive/2011/12/10/Smarty-two.html 接下來根據以下的Smarty模板引擎原理流程圖開發一個自己的模板引擎用於學習,以便加深理解。 Smarty模板引擎的原理,其實是
PHP模板引擎Smarty(二)深入淺出之Smarty模板引擎工作機制(一)
深入淺出Smarty模板引擎工作機制,我們將對比使用smarty模板引擎和沒使用smarty模板引擎的兩種開發方式的區別,並動手開發一個自己的模板引擎,以便加深對smarty模板引擎工作機制的理解。 在沒有使用Smarty模板引擎的情況下,我們都是將PHP程式和網頁模
laravel檢視blade模板使用集合
{{ $var }} - 列印內容 {{ $var or 'default' }} - 列印內容並帶一個預設值 {{{ $var }}} - 列印轉義內容 {{-- Comment --}}
Spring MVC 學習總結之FreeMarker模板引擎與動態頁面靜態化
目錄 一、FreeMarker簡介 二、第一個FreeMark示例 2.1、新建一個Maven專案 2.2、新增依賴 2.3、新增存放模板的資料夾 2.4、新增模板 2.5、解析模板
Laravel模板引擎Blade中section的一些標簽的區別介紹
繼承 體系 ont 全部 index blade 出現 由於 zone Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文檔中有關 Blade 的介紹並不詳細,有些東西沒有寫出來,而有些則是沒有說清楚。比如,使用中可能會遇到這樣的問題: 1.@yield
Laravel模板引擎Blade中section的一些標籤的區別介紹
Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文件中有關 Blade 的介紹並不詳細,有些東西沒有寫出來,而有些則是沒有說清楚。比如,使用中可能會遇到這樣的問題: [email protected] 和 @section 都可以預定義可替代的區塊,這兩者有什麼區別呢?[em
Laravel 模板引擎(Blade)原理簡析
轉自 http://0x1.im/blog/laravel/laravel-blade-engine.html?utm_source=tuicool&utm_medium=referral 上次提到過,模板引擎一般是要做三件事情: 變數值的輸出(ec
前端學PHP之自定義模板引擎
php什麽是網站模板?準確地說,是指網站頁面模板,即每個頁面僅是一個板式,包括結構、樣式和頁面布局,是創建網頁內容的樣板,也可以理解為已有的網頁框架。可以將模板中原有的內容替換成從服務器端數據庫中動態內容,目的是可以保持頁面風格一致 PHP是一種HTML內嵌式的在服務器端執行的腳本語言,所以大部分PHP開發
Asp.net動態頁面靜態化之初始NVelocity模板引擎
實現 tracking ssr system uil 文件系統 處理程序 .ashx hosting Asp.net動態頁面靜態化之初始NVelocity模板引擎 靜態頁面是網頁的代碼都在頁面中,不須要運行asp,php,jsp,.net等程序生成client網頁代碼的
[js高手之路]Node.js模板引擎教程-jade速學與實戰3-mixin
函數 .cn ima images ade 高手 js模板引擎 ron pan 強大的mixin mixin類似於函數的功能,可以達到模塊復用的效果 mixin show: 定義一個類似函數的功能,名字叫show,裏面的就是他的內容 +show: 調用show,每
[js高手之路]Node.js模板引擎教程-jade速學與實戰2-流程控制,轉義與非轉義
title 學習 != 下一步 cas ase spa back name 一、轉義與非轉義 jade模板文件代碼: 1 doctype html 2 html 3 head 4 meta(charset=‘utf-8‘)
[js高手之路]Node.js模板引擎教程-jade速學與實戰4-模板引用,繼承,插件使用
node.js ade 方法 頭部 containe jade bsp 繼承 for 一、block 模塊復用 把需要復用的模塊用block定義 block後面跟上模塊的名字,引用一次block 內容就會被復用一次 編譯之後的結果: 二,繼承模板(exten
Laravel -- Blade模板
less 函數 ESS url路徑 orelse pre for nbsp blade {{--流程控制--}} @if($name == ‘1‘) this is 1 @elseif($name == ‘2‘) this.is 2 @else who am
Spring Boot整合之模板引擎(Thymeleaf、Freemarker、jsp)
1. Thymeleaf模板 1.1 在pom.xml中新增Thymeleaf依賴 <!--使用thymeleaf標籤--> <dependency> <groupId>org.springframework.boot</groupId>
Spring Boot 整合之模板引擎(jsp、Freemarker 、Thymeleaf )
整合JSP模板 新增依賴 建立 maven 工程,在 pom.xml 檔案中新增如下依賴: <dependency> <groupId>javax.servlet</groupId> <artifactId>
Laravel blade模板轉義html標籤問題
Laravel blade模板轉義html標籤問題: 後臺textarea提交到表裡面的資料展現到前端頁面時(在後臺已使用nl2br()函式進行轉換),直接顯示如下: 很尷尬!!! 解決方法如下: {!! $res->content !!} 中間部分
【SpringBoot學習之路】11.Thymeleaf模板引擎
轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾【SpringBoot學習之路】11.Thymeleaf模板引擎 模板引擎簡介 JSP、Velocity、Freemarker、Thymeleaf SpringB
LARAVEL自定義擴充套件BLADE模板指令
我們以比較常用的continue和break為例子,在AppServiceProvider類的boot方法裡面新增如下程式碼: public function boot() { Blade::directive('continue', function() { ret
前端javaScript模板引擎之ArtTemplate
一、簡介 ArtTemplate是騰訊開發的一款使用方便、效能卓越javascript模板引擎,其渲染效率極其快。ArtTemplate的庫分為兩種,一個是template.js,這個是簡單的語法版本。另一個是template-native.js,是原生的語法版