🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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##} ``` 则此花括号和变量不会被转义