多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# addTableColumn 用来添加数据列表一列 ## 方法原型 function addTableColumn($name, $title, $type = null, $param = null, $width = null){} ## 参数: | 参数 | 类型 | 是否必须 | 说明 | | ------------ | ------------ | ------------ | ------------ | | $name | string | 是 | 字段名称,一般情况下与数据库字段名一致,现支持`project_info.user_info.nickname`格式的多维数据显示 | | $title | string | 是 | 列标题,就是生成页面列表的那一列的标题 | | $type | string | 否 | 自动在生成页面前对数据进行处理,默认值是text,即原封不动,可以设置的值列表如下 | | $param | string或array | 否 | 如果$type设为为callback,则必须设置此项 | | $width | string | 否 | 表格列宽度:满足自定义表格列宽度的需求,使用实例:->addTableColumn('title', '标题', '', '', '20%') | ### $type可设置的值 status : 会将1,0,-1转换成fa图标 byte : 会将字节数转换为以KB为单位 icon : 会显示为fa图标 date : 会将int格式的数字转换为日期如2016-02-26 datetime : 会将int格式的数字转换为日期如2016-02-26 12:12:12 avatar : 会将图片的ID转化为图片显示(与picture相比此项多了固定的图片宽高40X40) picture : 会将图片的ID转化为图片显示 pictures : 会将一组图片的ID转化为一组图片显示 type : Formbuilder的内置的表单类型由英文名转换为中文显示,比如textarea显示为多行文本,此项目一般用不到 quickedit : 【lyphp>=1.8.0】支持在列表快速编辑数据,比如列表项目的排序 prefix : 【lyphp>=1.8.0】为数据加上前缀,比如金额888显示为$888 suffix : 【lyphp>=1.8.0】为数据加上后缀,比如88显示为88% progress : 【lyphp>=1.8.0】显示一个进度条,需要在param第四个参数输入百分比 callback : 回调,为了满足更多自定义的数据转换,特设置了回调方式供大家自定义,该项需要配合第四个参数一起使用 ### $param可设置的值 该参数可以有两种写法: 1. 该参数是一个公共函数的名称及是一个字符串比如: ->addTableColumn('type', '类型', 'callback', 'get_book_title'), 那需要在common.php里有一个同名的函数get_book_title 2. 该参数是一个数组时,比如->addTableColumn('type', '类型', 'callback', array(D('FriendlyLink'), 'link_type')),那么link_type是FriendlyLinkModel.class.php里的一个public方法。 > 推荐大家使用第二种方法,能把方法放进类里就放进类里以便于结构清晰。 #### 用法示例 // 使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); ->addTableColumn('type', '类型', 'callback', array(D('FriendlyLink'), 'link_type')) 对应的FriendlyLinkModel.class.php里的回调方法如: ```php // +---------------------------------------------------------------------- namespace Cms\Model; use Think\Model; /** * 友情链接模型 * @author jry <598821125@qq.com> */ class FriendlyLinkModel extends Model { /** * 模块名称 * @author jry <598821125@qq.com> */ public $moduleName = 'Cms'; /** * 数据库真实表名 * 一般为了数据库的整洁,同时又不影响Model和Controller的名称 * 我们约定每个模块的数据表都加上相同的前缀,比如微信模块用weixin作为数据表前缀 * @author jry <598821125@qq.com> */ protected $tableName = 'cms_friendly_link'; /** * 自动验证规则 * @author jry <598821125@qq.com> */ protected $_validate = array( array('title', 'require', '标题不能为空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH), array('title', '1,80', '标题长度为1-80个字符', self::EXISTS_VALIDATE, 'length'), array('title', '', '标题已经存在', self::VALUE_VALIDATE, 'unique', self::MODEL_BOTH), array('url', 'require', '链接不能为空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH), array('url', '1,255', '链接长度为1-25个字符', self::EXISTS_VALIDATE, 'length'), array('url', '', '链接已经存在', self::VALUE_VALIDATE, 'unique', self::MODEL_BOTH), ); /** * 自动完成规则 * @author jry <598821125@qq.com> */ protected $_auto = array( array('create_time', 'time', self::MODEL_INSERT, 'function'), array('update_time', 'time', self::MODEL_BOTH, 'function'), array('status', '1', self::MODEL_INSERT), ); /** * 链接类型 * @author jry <598821125@qq.com> */ public function link_type($id) { $list['1'] = '友情链接'; $list['2'] = '合作伙伴'; return $id ? $list[$id] : $list; } } ```