自定义标签,说简单点也只是一个代码块而已。制作这样的自定义标签,可以使用此标签来显示自己的一个代码块。
1、创建标签类。这个标签类一般创建在system/tag 目录之下。
2、修改config/view.php文件,将自定义标称注册到系统之中。
[]'tags'=>['system\tag\类名'];这是一个数组,可以注册多个自定义标签。
<?php
namespace system\tag;
use hdphp\view\TagBase;
class AutoTab extends TagBase{
/**
* 声明标签:用户自定义的标签名
* 是一个二维数组
* 一维数组是用户声明的标签名
* 二维是声明的标签的基本属性
* 标签基本属性
* block:0 为行标签;1 为块标签
* level:块标签属性,只有block=1时才设置,是最多的嵌套层数
*/
public $tags = [
//'test' => ['block' => 1, 'level' => 4]
'autoTab' => ['block' => 0]
];
/**
* _autoTab:方法名与标签名前加下划线
* @param $attr 标签属性集合;标签内书写的标签属性,如row/name/id/class
* 上述这些属性会以集合方式返回到此参数之中。因此,可以设置收集哪些参数。
* @param $content 标签嵌套内容,块标签才有值;块标签体内包含的所有内容
* @param $view 视图服务对象
*
* 同名方法内的返回内容就是此标签的显示内容。所以,此方法最终要返回一段php代码。
* 并且,此方法返回的php代码会被编译器编译成临时文件存在。
*/
//public function _test($attr, $content, &$view){
//return 'this is _autoTab mothed';
//}
/**
* 1、参数和块标签是一样的,只是第2参数没有值;
* 2、首先要接收第1参数,即标签内属性传来的值
* 3、基本设想:传入一个标准二维数组,以表格形式自动创建表格
* 4、二维数组由属性from来获取
*/
public function _autoTab($attr, $content, &$view){
//当传入数据,并且数据条数大于0
if(isset($attr['from']) && count($attr['from'])>0){
$dArray=$attr['from'];
}else{
return '没有数据!';
}
return '此处要返回一个字符串,其中是php代码块';
}
}