模板语法
模板中使用标准的PHP语法, 除此以外还支持以下方法
生成连接
在模板中调用url
方法, 可以自动生成连接, 如果方法有别名, 会优先使用别名
$this->url('controller:action', array('key'=>'value'));
根据app配置文件中的url['type']
的值, 假设生成连接的语句如下:
$this->url('main:index', array('p1' => '1', 'p2' => 2, 'p3' => 3));
当type等于1
或5
在生成url时, 会直接抛弃参数的key, 所以生成的url最短. 这时需要在控制器中使用注释配置来还原参数的key, 具体使用方法请阅读相关章节
skeleton/htdocs/web/?/main/index/1/2/3
skeleton/htdocs/web/index.php/main/index/1/2/3
type等于4
或3
时生成的url会包含参数的key名称
skeleton/htdocs/web/?/main/index/p1/1/p2/2/p3/3
skeleton/htdocs/web/index.php/main/index/p1/1/p2/2/p3/3
当type=2时, 生成的url如下
skeleton/htdocs/web/index.php/main/index?p1=1&p2=2&p3=3
生成加密连接
$this->sUrl('controller:action', array('key'=>'value'));
唯一不同的是array('key'=>'value')
部分是加密的
>在控制器中调用 $this->sparams()
来还原加密前的参数
包含其他模板文件
$this->renderTpl("page/p1");
>引入page目录下的p1.tpl.php文件
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 包裹的属性, 包裹器名称)
自定义方法
在模板中可以直接调用视图控制器中提供的方法, 在视图控制器中创建输出帖子列表的方法如下:
protected function threadList( $data = array() )
{
foreach($data as $d)
{
?>
<li>
<a href="<?php echo $this->link("read", array('id'=>1)) ?>">标题</a>
</li>
<?php
}
}
在模板文件中用使用以下方法来调用
$this->threadList($data)
>重复使用的,公用模板片段, 可以写在视图控制器中, 减少磁盘IO来提升效率