OneThink模型管理中的列表定义

浏览:1368 发布日期:2016/05/21 分类:技术分享 关键字: OneThink 列表定义
这个列表定义,官方文档中实在是说的太模糊了,简直跟没说一样!百度也没有,在这个论坛里,也有人问过,回答的人,唉,这么说吧,他回答的还不如开发文档里的清楚呢,比没说还不如。
我现在就不知道这块怎么写,急了眼,直接分析了源代码,现在把结果写出来,供给那些后来的初学者使用,有兴趣的可以分析这几部分:
1、Admin下的ThinkController,lists方法,方法上来就解析这个列表定义,注意这个foreach ($grids as &$value),用的是&$value,所以遍历结束后直接改变了$grids数组。
2、Admin下Common中的function.php,第一个函数就是,function get_list_field($data, $grid),这个$data和$grid参数,都是ThinkController中解析的。

结论:
列表定义分三部分,每部分用冒号分开,例如:
id:操作:[EDIT]&cate_id=[category_id]|编辑,article/setstatus?status=-1&ids=[id]|假删除,[DELETE]|删除
第一部分是字段名(id),即数据库中定义的字段名;
第一部分是列表显示名(操作),即在模型管理->数据中,每个列表的标题,与数据库没有任何关系,只是为了解释该字段的作用;
第三部分是参数,
参数中可以使用系统(OneThink)定义的操作,例[EDIT],这个操作只有3个,在function.php第51行有:
// 替换系统特殊字符串
$href = str_replace(
array('[DELETE]','[EDIT]','[LIST]'),
array('setstatus?status=-1&ids=[id]',
'edit?id=[id]&model=[model_id]&cate_id=[category_id]',
'index?pid=[id]&model=[model_id]&cate_id=[category_id]'),
$href);
由此可以看出其实就是替换了URL参数而已。而[方括号]中的参数,必须是小写字母加_,因为它是表document中的字段。多个参数用逗号(,)分开。

最后,官方给出的手册中表示,每一条定义要换行,但是从lists方法中代码:
$grids = preg_split('/[;\r\n]+/s', trim($model['list_grid']));
从正则可以知道,用分号分隔也可以,我也试验过了,的确可以。比如:id:编号;name:名称:[EDIT]
最佳答案
评论( 相关
后面还有条评论,点击查看>>