[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
- 系统接口
- 模块云配置
- 云短信
- 云短信错误代码
- 云短信发送函数
- 批量群发短信
- 应用推广
- 悬赏文案
- 折扣码
- 系统消息
- 开发者等级资料认证
- 应用标签
- 模块自动检测订阅支持
- 小程序
- 开发实例
- 参数设置
- 常见问题