模板语法


模板中使用标准的PHP语法, 除此以外还支持以下方法

生成连接

在模板中调用url方法, 可以自动生成连接, 如果方法有别名, 会优先使用别名

$this->url('controller:action', array('key'=>'value'));

根据app配置文件中的url['type']的值, 假设生成连接的语句如下:

$this->url('main:index', array('p1' => '1', 'p2' => 2, 'p3' => 3));

当type等于15在生成url时, 会直接抛弃参数的key, 所以生成的url最短. 这时需要在控制器中使用注释配置来还原参数的key, 具体使用方法请阅读相关章节

skeleton/htdocs/web/?/main/index/1/2/3
skeleton/htdocs/web/index.php/main/index/1/2/3

type等于43时生成的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相关

  1. a()方法用于生成超链接
  2. img()方法用于生成图片连接
  3. input() 处理表单中输入框
  4. radio(), checkbox(), select 处理单/复选/下拉
  5. htmlTag() 输出单独的html标签
  6. 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>
    

    更多使用方法请查看文档或在官方群内讨论

  7. block() 输出带wrap()的块级元素
  8. buildForm(表单模板名称), 把模板当表单载入, 可以在入口注册匿名函数buildForm来改变框架生成表单的行为

    $this->on('buildForm', function(){  
    	....  
    });
    
  9. 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来提升效率