[TOC]
#### 視圖
視圖是 MVC 模式中的一部分。 它是展示數據到終端用戶的代碼。
在網頁應用中,根據視圖模板來創建視圖,視圖模板為PHP腳本文件, 主要包含HTML代碼和展示類PHP代碼,簡單起見,我們稱視圖模板或視圖模板文件為視圖。
#### 渲染視圖
##### **調用系統模板文件**
在任何php代碼中可以使用 **template()** 函數來渲染一個視圖文件。例如:
```
<?php
/**
* [WeEngine System] Copyright (c) 2013 WE7.CC
*/
$setting = $_W['setting'];
//將渲染web/themes/default/user/login.html文件
template('user/login');
```
app端與web端類似,只不過是起始目錄為 /app/themes/default/xxx/yyyy.html
##### **調用模塊中的模板文件**
同生成URL函數一樣,微擎也同樣為模塊封裝了單獨的模板調用函數,例如:
```
<?php
class We7_demoModuleSite extends WeModuleSite {
public function doMobileIndex1() {
global $_W, $_GPC;
$title = '支付測試';
//將渲染模塊目錄下的app端的模板文件
// addons/we7_demo/template/mobile/index1.html
include $this->template('index1');
}
public function doWebManage() {
global $_W, $_GPC;
//將渲染模塊目錄下的web端的模板文件
// addons/we7_demo/template/manage1.html
include $this->template('manage1');
}
}
```
模塊中的template函數,分為app端與web端的調用,開發時請大家注意各自的目錄
##### 模板標簽
微擎的模板文件本質上就是一個php文件,所以支持直接書寫php代碼,但是為了增加開發效率和非php人員的使用,微擎系統定了了一套類似于 Smarty 的模板引擎標簽
下面我們通過實例講解一下微擎中的標簽如何使用。
##### 輸出一個變量
輸出標簽是由一對花括號做為定界符的,不支持輸出數組,相對于php中的 echo 如下:
```
<div class="user-head ellipsis">{$_W['fans']['nickname']} :</div>
// 對等于
```
##### 判斷語句
如果 $do 等于 record 則顯示下面的卡券領取記錄,否則顯示查看卡券
```
{if $do == 'record'}
<li class="active"><a href="javascript:;">卡券領取記錄</a></li>
{else}
<li class="active"><a href="javascript:;">查看卡券</a></li>
{/if}
```
if 和 elseif 配合使用
```
{if $dca['status'] == 1}
<span class="label label-success">未使用</span>
{elseif $dca['status'] == 2}
<span class="label label-warning">已失效</span>
{elseif $dca['status'] == 3}
<span class="label label-danger">已核銷</span>
{elseif $dca['status'] == 4}
<span class="label label-default">已刪除</span>
{else}
<span class="label label-default">全部</span>
{/if}
```
##### 循環語句
循環一個數組用 loop 標簽,與php中的 foreach 函數類似,第一個參數為數組的索引,第二個參數為數組第一項的值
只要標簽成對匹配,模板中的標簽是可以嵌套使用的。
````
{loop $list $index $item}
<tr>
<td>{$index}(顯示數組的索引):</td>
<td>{$item['user']['nickname']}</td>
<td>
{if $item['follow'] == '1'}
<span class="label label-success">已關注 </span>
{elseif $item['unfollowtime'] <> '0'}
<span class="label label-warning" >取消關注 </span>
{else}
<span class="label label-danger">未關注 </span>
{/if}
</td>
</tr>
{/loop}
```
##### 一行php語句
由于某些時候需要使用一些php來輸出內容,比如格式化時間戳為日期時,此寫法并不支持多行php語句,例如:
```
<span class="help-block">{php echo date('Y-m-d H:i:s', $row['followtime'])}</span>
```
##### 引用一個模板文件
在模板中如果需要引用其它模板文件可以使用以下的方法:
```
//模塊中的使用方法,不需要添加目錄信息
{template 'header'}
//系統的模板引用的方法,需要添加目錄信息
{template 'common/header-base'}
```
##### 創建一個URL地址
定義URL時,與在php文件中的創建方法一樣,具體使用如下:
```
<a href="{url 'extension/service/display'}" class="tile img-rounded"><i class="fa fa-glass"></i><span>常用服務</span></a>
<a href="{url 'home/welcome/ext' array('m' => $module['name'])}">模塊 - {$module['title']}</a>
```
此標簽并沒有提供模塊 $this->createMobileUrl('xx') 函數,在模塊中的模板中請按以下方法創建:
```
{php echo $this->createMobileUrl('order')}
```
##### 轉義一個圖片,附件地址
微擎系統支持遠程附件,如果你有用到圖片或是附件請轉義一下地址,具體使用如下:
```
<i style="background:url({media $nav['icon']}) no-repeat;background-size:cover;width:18px;height:18px;"></i>
```
##### 輸出一對花括號
因為模板標簽定界符是一對花括號,所以當你想輸出一對花括號本身時可以使用以下方法:
```
{##$order##}
```
則此花括號和變量不會被轉義
- 入門
- 系統安裝
- 接入公眾平臺
- 關鍵字回復
- 更上一層樓
- 編碼規范
- php編碼規范
- html&css編碼規范
- JavaScript編碼規范
- 系統概述
- 結構概述
- 入口腳本
- 微擎MVC
- URL路由&創建
- $_W&全局變量
- 加載器
- 錯誤處理
- 日志記錄
- 模板
- 模板標簽
- 數據調用
- 常用變量
- 手機端組件
- 概述及依賴
- 圖像上傳
- 彈出選項
- 后臺組件
- 概述及依賴
- 后臺文件上傳
- 富文本編輯器
- 系統鏈接選擇器
- 其它常用組件
- 數據庫
- 參數綁定
- 數據操作
- 主從配置
- 連接其它數據庫
- 緩存
- 配置
- 緩存操作
- Http請求
- 概述及依賴
- GET&POST請求
- 發送郵件
- 會員與積分
- 統一用戶中心
- 借用OAuth
- 積分操作
- 資料操作
- 卡券
- 營銷卡券
- 會員卡
- 消息響應
- 消息概述
- 消息響應
- 微信API
- 公眾號AccessToken
- 共享收貨地址(廢棄)
- 共享收貨地址(新)
- 粉絲標簽
- 客服消息
- 模板消息
- 粉絲信息
- 素材
- 群發
- 二維碼
- 在線支付
- 概述及依賴
- 發起支付(PHP)
- 發起支付(JS)
- 驗證支付
- 模塊
- 設計模塊
- 目錄結構
- module.php
- processor.php
- site.php
- receiver.php
- 模塊高級專題
- 自定義分享
- 智能應答
- 微信卡券
- 遠程附件
- 權限控制
- 特殊事件觸發模塊
- 粉絲信息
- 小程序
- 概述
- Uitl類
- 云服務
- 云API
- 系統接口
- 模塊云配置
- 云短信
- 云短信錯誤代碼
- 云短信發送函數
- 批量群發短信
- 應用推廣
- 懸賞文案
- 折扣碼
- 系統消息
- 開發者等級資料認證
- 應用標簽
- 模塊自動檢測訂閱支持
- 小程序
- 開發實例
- 參數設置
- 常見問題