# common_lists
## 说明
豆信3在`/App/Common/Controller/CommonController.class.php`中封装了一个common_lists()方法,用于数据的通用显示。在任意直接继承或者间接继承了CommonController的控制器中,使用$this->common_lists()写法可以调用通用的数据列表模板显示数据。
## 示例
![](https://box.kancloud.cn/2016-07-11_5783683fedb74.png)
>[info] 上图所示的公众号管理系统中的粉丝列表页面,对应的是`/App/Mp/Controller/FansController.class.php`中的lists()方法。
## 代码实现
~~~
/**
* 粉丝列表
* @author 艾逗笔<765532665@qq.com>
*/
public function lists() {
$this->addCrumb('公众号管理', U('Mp/Index/index'), '')
->addCrumb('粉丝管理', U('Mp/Fans/lists'), '')
->addCrumb('粉丝列表', '', 'active')
->addNav('粉丝列表', '', 'active')
->addNav('功能配置', U('Mp/Fans/setting'), '')
->setModel('mp_fans')
->setListMap(array('mpid'=>get_mpid()))
->addListItem('openid', '粉丝OPENID', 'hidden')
->addListItem('headimgurl', '头像', 'image', array('attr'=>'width=50 height=50','placeholder'=>__ROOT__ . '/Public/Admin/img/noname.jpg'))
->addListItem('nickname', '昵称', '', array('placeholder'=>'匿名'))
->addListItem('sex', '性别', 'enum', array('options'=>array(''=>'未知',0=>'未知',1=>'男',2=>'女')))
->addListItem('is_subscribe', '是否关注', 'enum', array('options'=>array(0=>'未关注',1=>'已关注')))
->addListItem('id', '操作', 'custom', array('options'=>array('edit_fans'=>array('编辑粉丝资料', U('Mp/Fans/edit_fans', array('openid'=>'{openid}')),'btn btn-primary btn-sm icon-edit',''))))
->common_lists();
}
~~~
>[info]通过`addCrumb`、`addNav`等连贯操作可以定义数据列表页面的面包屑导航和功能导航,通过`setModel`、`setListModel`等连贯操作可以设置数据列表要显示的数据源,通过`addListItem`可以设置要显示的字段并对数据进行格式化后显示,格式化数据采用的方式通过`addListItem`的第三及第四个参数指定。最后通过`common_lists`方法以通用的数据列表形式把通过连贯操作设置的内容显示出来。
***连贯操作涉及到的方法及参数定义请参考自定义模型章节的详细介绍***
# 通过模型自定义显示数据列表
## 说明
除了上面演示的通过$`this->addCrumb()->common_lists()`等连贯操作来显示数据列表外,豆信3也支持使用模型自定义的方式来显示数据。模型自定义的方式在代码美观上面来说可能没有连贯操作简洁,但是如果是在插件控制器中使用通用的数据列表显示数据,推荐使用模型自定义方式。一方面是因为模型可以在插件信息文件进行定义,在控制器中通过`get_addon_model('model_name')`的方式引用,做到了视图定义与控制器业务逻辑分离。另一方面如果是通过云平台安装的插件,模型自定义信息写入数据库后插件信息文件自动删除,可以降低插件被盗版的可能性。
## 示例
![](https://box.kancloud.cn/2016-07-11_5783684012147.png)
## 代码实现
1、在插件的info.php中定义模型
~~~
return array(
'model' => array(
'idou_guestbook_list' => array(
'name' => 'idou_guestbook_list',
'title' => '留言表',
'lists' => array(
array(
'name' => 'id',
'title' => '主键',
'format' => 'hidden'
),
array(
'name' => 'openid',
'title' => '留言者头像',
'format' => 'function',
'extra' => array(
'function_name' => 'get_fans_headimg',
'params' => '###'
),
),
array(
'name' => 'nickname',
'title' => '留言者昵称'
),
array(
'name' => 'content',
'title' => '留言内容'
),
array(
'name' => 'create_time',
'title' => '留言时间',
'format' => 'function',
'extra' => array(
'function_name' => 'date',
'params' => 'Y-m-d H:i:s,###'
)
),
array(
'name' => 'status',
'title' => '留言状态',
'format' => 'enum',
'extra' => array(
'options' => array(
0 => '<font color="blue">未审核</font>',
1 => '<font color="green">审核通过</font>',
2 => '<font color="red">审核不通过</font>'
)
)
),
array(
'name' => 'id',
'title' => '操作',
'format' => 'custom',
'extra' => array(
'options' => array(
'edit' => array(
'title' => '编辑留言',
'url' => create_addon_url('edit', array('id'=>'{id}')),
'class' => 'btn btn-primary btn-sm icon-edit',
'attr' => ''
),
'delete' => array(
'title' => '删除留言',
'url' => create_addon_url('delete', array('id'=>'{id}')),
'class' => 'btn btn-danger btn-sm icon-delete',
'attr' => ''
)
)
)
)
),
'list_map' => array('mpid'=>get_mpid()),
'list_order' => 'create_time desc'
)
),
);
~~~
2、在控制器中调用模型并使用通用数据列表模板显示数据
~~~
/**
* 留言管理
* @author 艾逗笔<765532665@qq.com>
*/
public function messages() {
$model = get_addon_model('idou_guestbook_list');
$this->setModel($model)
->common_lists();
}
~~~
或者也可以这样写:
~~~
/**
* 留言管理
* @author 艾逗笔<765532665@qq.com>
*/
public function messages() {
$model = get_addon_model('idou_guestbook_list');
parent::common_lists($model);
}
~~~
>[info] 关于自定义模型中涉及到的数组元素可以参考模型自定义章节给出的详细介绍,在开发当中可以结合使用连贯操作和模型定义两种方式来调用通用的数据列表显示数据。
- 更新日志
- 入门
- 关于豆信
- 系统安装
- 功能介绍
- 公众号对接
- 小程序对接
- 系统架构
- 数据字典
- 框架目录结构
- 插件目录结构
- 运行流程
- 插件开发
- 新建插件
- info.php
- 设计数据表
- 插件控制器
- 后台管理控制器
- 移动端控制器
- 交互响应控制器
- 接口管理控制器
- 插件模型
- 插件视图
- 发布插件
- 自定义模型
- 通用增删改查
- common_lists
- common_add
- common_edit
- common_delete
- setMetaTitle
- setSubmitType
- setModel
- setListMap
- setListSearch
- setListOrder
- setListPer
- setEditMap
- setDeleteMap
- setFindMap
- addCrumb
- addNav
- addButton
- setTip
- 函数手册
- get_addon
- get_addon_settings
- tomedia
- get_fans_info
- 小程序开发专题
- 小程序对接插件.js
- 获取插件配置
- 获取用户信息
- 更新用户资料
- 公众号开发专题
- 获取粉丝信息
- 自定义分享
- 消息上下文
- 微信支付
- 企业付款
- 发送现金红包
- 发送模板消息
- 发送客服消息
- 引入前端资源
- 限制页面仅在微信浏览器访问
- 在插件页面中引入样式文件
- 在插件中创建跳转链接
- 数据预处理
- 插件开发实例
- 聊天机器人
- 留言板
- 常见问题解答