视图控制器
视图控制器是连接控制器和模板的桥梁, 更是对模板的强大扩展
基本用法
视图控制器文件夹位于 app\web\views
目录下, 视图控制器的名称是和控制器的名称相对应的, 并在结尾加上View
, Main
控制器的默认的视图控制器类名为MainView
,内容如下:
namespace app\web\views;
use Cross\MVC\View;
class MainView extends View
{
function index($data = array())
{
if (! empty($data['data'])) {
$this->renderTpl("main/index", $data['data']);
}
if (! empty($data['user'])) {
$this->renderTpl("user/index", $data['user']);
}
}
}
如果有数据, 则加载对应的模板.
ajax返回的时候,不用返回公共的layer文件内容
指定模板文件后缀
在cp中, 默认的模板文件名后缀是.tpl.php
, 在视图控制器中可以定义个成员变量来重新设置模板系统文件的后缀名
protected $tpl_file_ext_name = '.phtml';
此时模板文件名必须以.phtml
结尾
HTML相关
a()
方法用于生成超链接img()
方法用于生成图片连接input()
处理表单中输入框radio()
,checkbox()
,select
处理单/复选/下拉htmlTag()
输出单独的html标签wrap()
用于生成复杂的html$this->wrap('div') ->wrap('span') ->a('crossphp', 'http://www.crossphp.com');
生成的html代码为
<div> <span> <a href="http://www.crossphp.com">crossphp</a> </span> </div>
更多使用方法请查看文档或在官方群内讨论
block()
输出带wrap()
的块级元素buildForm(表单模板名称)
, 把模板当表单载入, 可以在入口注册匿名函数buildForm
来改变框架生成表单的行为$this->on('buildForm', function(){ .... });
html()
用于安全的输出html内容
布局相关方法
在视图控制器和模板中, 根据不同逻辑渲染不同模板.
section(模板名称, 模板数据, array 包裹的属性, 包裹器名称)
获取模板的文件路径
在视图控制器中调用$this->tpl('doc/read')
获取templates/doc
目录下read.tpl.php
模板的绝对路径
渲染数据
传递数据并载入模板
this->renderTpl('doc/read', $data)
在templates/doc/read.tpl.php
文件中, 使用$data
来获取传递的数据
为布局文件中的变量赋值
在视图控制器中使用$this->set()
方法为布局文件中的变量赋值
$this->set(array(
'uri' => $data['uri'],
'title' => $data ['title'],
'keywords' => $data ['keywords'],
));
生成资源文件路径
在视图控制器中使用$this->res()
方法来生成资源文件的绝对路径
$this->res('css/style.css');
生成的连接为http://youdomain.com/static/css/style.css
获取或设置当前uri默认路径
$this->getLinkBase()
当前索引文件的uri, $this->setLinkBase()
, 设置生成连接的前缀路径
获取当前app名称
$this->getAppName()
获取当前loadApp中的app名称
获取和设置模板文件的基础路径
$this->getTplBasePath()
和 $this->setTplBasePath()
获取模板路径
$->getTplPath()
获取当前模板文件夹路径
安全输出数组中的值
$this->e()
第一个参数为数组, 第二个参数为数组中的key
, 第三个参数为默认值, 当数组中的key不存在时, 地上参数生效.
生成指定app名称的连接
$this->appUrl()
第一个参数为基础url, 第二个参数为app名称, 第三个参数为 控制器:方法 第四个参数为参数列表, 第五个参数标识是否生成加密连接