thinkphp5.0學習(九):TP5.0視圖和模板

原文地址:http://blog.csdn.net/fight_tianer/article/details/78602711

一、視圖

1.加載頁面

1.繼承系統控制器類return $this->fetch(參數1,參數2,參數3,參數4);參數1(字符串):模板渲染參數2(數組):模板賦值參數3(數組):模板替換
2.使用助手函數return view();參數與fetch相同
3.使用view類(不建議使用)$view=new View();return $view->fetch();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.模板賦值

1.控制器類中的assign方法$this->assign('name',$name);$this->assign('city',$city);$this->assign(['name'=>$name,'city'=>$city]);return view();
2.通過fetch方法return $this->fetch('',['name'=>$name,'city'=>$city]);
3.助手函數return view('',['name'=>$name,'city'=>$city]);
4.對象賦值$this->view->name="甜甜";$this->view->city="太原";return view();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.模板替換

1.配置文件更改(全局替換,所有頁面中都被替換)(config文件中)// 視圖輸出字符串內容替換// 只有頁面被替換,也就是在php頁面中獲取不到__HOMES__'view_replace_str'       => ['__HOMES__'=>'/static/home/public'],
2.部分替換1.fetch方法// fetch參數:頁面,變量分配,視圖輸出字符串內容替換return $this->fetch('',[],['__HOMES__'=>'/static/home/public']);2.助手函數return view('',[],['__HOMES__'=>'/static/home/public']);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4.模板渲染

1.默認加載當前模塊,當前控制器,當前方法對應的頁面return $this->fetch();
2.指定加載的頁面// 加載當前模塊,當前控制器下,用戶定義的頁面return $this->fetch('jiazai');// 加載當前模塊,user控制器下 jiazai頁面return $this->fetch('user/jiazai');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

二、模板

1.模板標簽

1.普通標簽(刪除了runtime下的temp下的緩存文件再測試)

 // 模板引擎普通標簽開始標記'tpl_begin'    => '{',// 模板引擎普通標簽結束標記'tpl_end' => '}',
  • 1
  • 2
  • 3
  • 4

2.標簽庫標簽(刪除了runtime下的temp下的緩存文件再測試)

 // 標簽庫標簽開始標記'taglib_begin' => '}',// 標簽庫標簽結束標記'taglib_end' => '{', {for start="1" end="10"} {$i} {/for}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.輸出變量

1.字符串

$this->assign("str","甜甜");
<h2>{$str}</h2>
  • 1
  • 2

2.數組

$data=['name'=>'張三','age'=>18, 'sex'=>'男' ]; $this->assign("data",$data); <h2>{$data['name']}<h2> <h2>{$data['age']}<h2> <h2>{$data['sex']}<h2>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.使用函數

//1.使用豎線,參數寫在等于號后面{$data.name|md5} <?php echo (md5($data['name'])); ?> {$time|date="y-m-d H:i:s",###} <?php echo (date("y-m-d H:i:s",$time)); ?> {$name|md5|strtoupper|substr=0,10} <?php echo (substr(strtoupper(md5($name)),0,10)); ?> //2.冒號開始 {:md5($pass)} {:date('Y-m-d H:i:s',$time)} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.默認值

{$user.nickname|default="這家伙很懶,什么也沒留下"}
  • 1

5.三元運算符

{$status? '正常' : '錯誤'}
{$status>2? '正常' : '錯誤'}
  • 1
  • 2

6.算數運算符

{$a}+{$b}={$a+$b}
{$a}-{$b}={$a-$b} {$a}*{$b}={$a*$b} {$a}/{$b}={$a/$b} {$a}%{$b}={$a%$b} {$a++} {$b--}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在使用運算符的時候,不再支持常規函數用法,例如:

{$user.score+10} //正確的
{$user['score']+10} //正確的 {$user['score']*$user['level']} //正確的 {$user['score']|myFun*10} //錯誤的 {$user['score']+myFun($user['level'])} //正確的
  • 1
  • 2
  • 3
  • 4
  • 5

7.原樣輸出

{literal}Hello,{$name}!
{/literal}
  • 1
  • 2
  • 3

8.系統變量

1.系統變量($Think開頭)支持輸出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE變量。 <h2>{$_GET['id']}</h2> <h2>{$Think.get.id}</h2> <h2>{$_SERVER['HTTP_HOST']}</h2> <h2>{$_SERVER.HTTP_HOST}</h2> <h2>{$Think.SERVER.HTTP_HOST}</h2> 2.常量輸出(常量詳見附錄常量參考) <h2>{$Think.const.app_path}</h2> <h2>{$Think.const.ds}</h2> <h2>{$Think.const.think_path}</h2> <h2>{$Think.const.is_win}</h2> <h2>{$Think.const.THINK_VERSION}</h2> 3.配置文件輸出(查看配置文件) <h2>{$Think.config.app_namespace}</h2> <h2>{$Think.config.default_lang}</h2>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

9.請求參數?
支持直接使用request對象

{$Request.get.id}
{$Request.param.name}
  • 1
  • 2

以$Request.開頭的變量輸出會認為是系統Request請求對象的參數輸出。?
支持Request類的大部分方法,但只支持方法的第一個參數。

10.模板注釋

{/* 注釋內容 */ } 或 {// 注釋內容 } {/* 這是模板 注釋內容*/ }
  • 1
  • 2
  • 3
  • 4

11.頁面包含(可以包含多次)

{include file='Public/header'}<div>body</div> {include file='Public/footer'}
  • 1
  • 2
  • 3

12.模板布局

1.在視圖目錄下新建文件layout.html(app\admin\view)
2.在layout頁面中將所有的公共頁面保留,非公共頁面使用{__CONTENT__}替代(__CONTENT__只能存在一個)
3.頁面中引入模板布局{layout name="layout" /}+非公共區域內容
  • 1
  • 2
  • 3
  • 4

13.模板繼承

1.在視圖目錄下新建base.html
2.在base.html中對頁面進行分割<!DOCTYPE html><html><head><title></title></head><body><div>{block name="nav"}{/block}</div><div>{block name="menu"}{/block}{block name="main"}{/block}</div><div>{block name="footer"}{/block}</div></body></html>
3.使用繼承{extend name="base" /}{block name="nav"}{include file="public/header" /}{/block}{block name="menu"}{include file="public/menu" /}{/block}{block name="main"}{include file="public/content" /}{/block}{block name="footer"}{include file="public/footer" /}{/block}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

14.內置標簽

1.volist循環{volist name="data" id="val" offset="5" length="3"} <p>{$key}:{$val.id}:{$val.name}</p> {/volist} //區分奇數偶數 {volist name="data" id="val" mod="2" empty="暫時沒有數據"} {eq name="mod" value="0"} <p style="color: red;">{$key}:{$val.id}:{$val.name}</p> {/eq} {eq name="mod" value="1"} <p>{$key}:{$val.id}:{$val.name}</p> {/eq} {/volist} name 需要遍歷的數據 id 類似于foreach中的value offset 截取數據的起始位置 length 截取數據的個數 mod 奇數偶數 empty 數據為空時使用 key 編號 2.foreach循環 {foreach name="data" item="val"} <p>{$key}{$val.id}{$val.name}</p> {/foreach} name 需要遍歷的數據 item 類似于foreach中的value key 類似于foreach中的key 3.for循環 start 開始值 end 結束值 comparison 比較條件(參看下表),默認lt step 步數 name 循環變量(默認i) //正序 {for start="0" end="10" comparison="elt" step="2" name="i"} {$i} {/for} //倒敘 {for start="10" end="0" comparison="gt" step="-1" name="i"} {$i} {/for}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
標簽含義
eq或者 equal等于
neq 或者notequal不等于
gt大于
egt大于等于
lt小于
elt小于等于
heq恒等于
nheq不恒等于
4.比較標簽{eq name="a" value="10"}正確{/eq}{neq name="a" value="10"}正確{/eq} {gt name="a" value="10"}正確{/eq} {egt name="a" value="10"}正確{/eq} {lt name="a" value="10"}正確{/eq} {elt name="a" value="10"}正確{/eq} {heq name="a" value="10"}正確{/eq} {nheq name="a" value="10"}正確{/eq} 5.條件判斷 {switch name="week"} {case value='1'} 周一{/case} {case value='2'} 周二{/case {case value='3'} 周三{/case} {case value='4'} 周四{/case} {case value='5'} 周五{/case} {case value='6'} 周六{/case} {default /} 周日 {/switch} 6.in和notin比較類似 {in name="week" value="0,1,2,3,4,5,6"} 合法的數據 {else /} 不合法的數據 {/in} 7.between和notbetween {between name="week" value="0,6"} 合法數據 {else /} 不合法的數據 {/between} 8.原生php {php} echo "123"; {/php} <?php echo "123"; ?> 9.嵌套使用 //隔行變色 {volist name="data" id="val"} {if condition="$key % 2"} <p style="color: red;">{$key}{$val.id}{$val.name}</p > {else /} <p style="color: pink;">{$key}{$val.id}{$val.name}</p > {/if} {/volist} //三行變色 {volist name="data" id="val"} {php} $sw=$key%3; {/php} {switch name="sw"} {case value="0"} <p style="color: red;">{$key}{$val.id}{$val.name}</p > {/case} {case value="1"} <p style="color: blue;">{$key}{$val.id}{$val.name}</p > {/case} {case value="2"} <p style="color: green;">{$key}{$val.id}{$val.name}</p > {/case} {/switch} {/volist} //多維數組遍歷 {volist name="type" id="val"} <h2>{$val.name}</h2> {volist name="val.product" id="goods"} <p>{$goods.name}{$goods.price}</p > {/volist} {/volist}

轉載于:https://www.cnblogs.com/ZhYQ-Note/p/8626135.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#中調用halcon引擎來執行hdev程序

調用halcon引擎有兩個直接的好處&#xff1a; 避免C# 與halcon代碼混編時可能產生的內存泄露問題 修改halcon程序時不用重新編譯C# 勇哥寫了一個示例&#xff0c;詳細的應用感受和缺點限制勇哥會持續做相關的總結給大家分享。 對于halcon17來說&#xff0c;要運行下面的程序…

Node.js Up and Runing 學習日記(八)

目錄 連接池基于一個簡單的Socker.io服務器連接池 生產環境通常由多種資源組成: web服務器,緩存服務器和數據庫服務器. 數據庫服務器通常部署在web服務器之外的獨立機器上,這使得面向公眾的網站不必重新配置和修改復雜的數據庫群就可以垂直增長了. 基于 為每一個請求創建一個甚…

036有效的數獨

1 #include "000庫函數.h"2 3 //一看&#xff0c;沒想出什么好法子&#xff0c;就遍歷了4 //最重要的是如何比較小九宮格的數據5 //44ms6 class Solution {7 public:8 bool isValidSudoku(vector<vector<char>>& board) {9 for (int i …

WinAPI——Windows 消息

消息值 注釋 WM_NULL$0000 WM_CREATE$0001 WM_DESTROY$0002 WM_MOVE$0003 WM_SIZE$0005 WM_ACTIVATE$0006 WM_SETFOCUS$0007 WM_KILLFOCUS$0008 WM_ENABLE$000A WM_SETREDRAW$000B WM_SETTEXT$000C WM_GETTEXT$000D WM_GETTEXTLENGTH$000E WM_PAINT$000F WM_CLOSE$0010 WM_QUER…

AciveMQ小結|最后有視頻

1 JMS 在介紹ActiveMQ之前&#xff0c;首先簡要介紹一下JMS規范。 1.1 JMS的基本構件 1&#xff0e;1&#xff0e;1 連接工廠 連接工廠是客戶用來創建連接的對象&#xff0c;例如ActiveMQ提供的ActiveMQConnectionFactory。 1&#xff0e;1&#xff0e;2 連接 JMS Connection封…

Build 2016: 發布明天的云創新來服務今天的開發者

每個企業和行業都在被云潛移默化地改變著。隨著云計算的速度、規模和靈活性的不斷增加&#xff0c;云服務帶來的可能性也在不斷被拓展。想象一下&#xff0c;通過監測傳感器&#xff0c;一位奶農能夠將他的奶牛牛奶產量提高&#xff1b;或是一家醫院能夠自動監測環境衛生狀況&a…

禁用JavaScript之后,你的網站表現如何?

禁用JavaScript之后&#xff0c;你的網站表現如何&#xff1f;一最近要做一個新官網&#xff0c;需求評審完之后&#xff0c;考慮到官網都是純靜態頁面&#xff0c;功能簡單&#xff0c;操起vue-cli3幾秒內創建好了項目腳手架&#xff0c;開發前&#xff0c;我打開了首頁模板文…

C# 使用 Windows API 操作控件: SendMessage

在C#中&#xff0c;程序采用了的驅動采用了事件驅動而不是原來的消息驅動&#xff0c;雖然.net框架提供的事件已經十分豐富&#xff0c;但是在以前的系統中定義了豐富的消息對系統的編程提供了方便的實現方法&#xff0c;因此在C#中使用消息有時候還是大大提高編程的效率的。定…

對類的理解:

在public class First 表示如果一個類的聲明為public&#xff0c;要求該類的類名必須和文件保持一致。在編譯 源文件時&#xff0c;讓雨果源文件中定義了多個類&#xff0c;那么每個類會形成*.class 文件&#xff0c;執行是&#xff0c;通過Java類名&#xff0c;運行的的是該類…

概率論

概率論轉載于:https://www.cnblogs.com/zengkefu/p/7357249.html

Hive安裝中遇到過的坑

實現說明每一個用戶的環境都有細微的不一致&#xff0c;所以這里只是個人經過這些坑的處理&#xff0c;但是不意味著所有處理都是這樣的操作&#xff0c;僅作為參考。 第一個坑 數據庫安裝&#xff0c;數據庫最好裝在Linux上&#xff0c;一直出了很多錯&#xff0c;這里有一個博…

Halcon:模版匹配

一&#xff1a;函數介紹 1.創建模板 create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID) Template &#xff1a;模板圖像 NumLevels&#xff1a;圖像金字塔級數&#xff0c;該值越小…

java基礎英語---第二十六天

Terminate [ t?:mineit ] 結束 Instantiation [in,stn?iei??n] 實例化 Instance declared [diklε?d] 公然的 Access [ ?kses ] 進入,接近,入口,通道 Accessible [?kses?bl] 可進入的 invoke [inv?uk] 調用 board [b?:d] 木板,甲板 MainBoard card [kɑ:d] …

ASP.NET Core部署到Linux服務器(CentOS7 x64)

前言 本文主要講解如何一步步將ASP.NET Core網站發布到Linux服務器&#xff0c;文中會講解具體步驟及需要避免的各種問題。 目錄 一、環境介紹 二、創建及發布ASP.NET Core網站項目 三、服務器軟件安裝&#xff08;.NET Core SDK&#xff09; 四、在服務器上部署ASP.NET Core網…

redux進一步優化

1. 將原來的 mapStateToDispatch 中的函數提取出來&#xff0c;放在組件中&#xff0c; 如原來的&#xff1a; function mapStateToProps(state, ownProps) {return {hasMore:state.getIn([tabs,hasMore]),} } function mapDispatchToProps(dispatch) {return {addTabList:(i…

C# : 調用C++動態庫(dll)

在實際軟件開發過程中&#xff0c;由于公司使用了多種語言開發&#xff0c;在C#中可能需要實現某個功能&#xff0c;而該功能可能用其他語言已經實現了&#xff0c;那么我們可以調用其他語言寫好的模塊嗎&#xff1f;還有就是&#xff0c;由于C#開發好的項目&#xff0c;我們可…

Python3.5以上版本lxml導入etree報錯Unresolved reference

Web抓取Web站點使用HTML描述&#xff0c;這意味著每個web頁面是一個結構化的文檔。有時從中 獲取數據同時保持它的結構是有用的。web站點不總是以容易處理的格式&#xff0c; 如 csv 或者 json 提供它們的數據。 這正是web抓取出場的時機。Web抓取是使用計算機程序將web頁面數據…

linux設置history歷史記錄

#說明export HISTSIZE1000 #設置歷史記錄顯示1000行export HISTTIMEFORMAT%F %T #設置歷史記錄格式 999 2017-08-15 10:58:32 #修改vim /etc/profilesed -i "s/\(HISTSIZE\).*/\11000/" /etc/profilesed -i "/HISTSIZE/aexport HISTTIMEFORMAT%F %T " /et…

STL-容器庫101--array【C11】

1. 原型 C11提供 template < class T, size_t N > class array;T&#xff1a; 元素類型&#xff0c;以 array::value_type 作為別名使用&#xff1b;N&#xff1a; array中元素大小&#xff1b; 固定size的序列容器&#xff1b;初始化時&#xff0c; array對象不保存任何…

C#:向C++封送結構體數組

在使用第三方的非托管API時&#xff0c;我們經常會遇到參數為指針或指針的指針這種情況&#xff0c; 一般我們會用IntPtr指向我們需要傳遞的參數地址&#xff1b; 但是當遇到這種一個導出函數時,我們如何正確的使用IntPtr呢&#xff0c; extern "C" __declspec(dll…