作用

使用通用数据编辑视图的时候,需要通过setEditMap设置数据的保存条件。下例所示通过setEditMap(array('id'=>I('get.id')))设置根据当前的角色id对编辑后的角色数据进行保存。

示例

setEditMap - 图1

视图类实现

  1. /**
  2. * 编辑角色
  3. * @author 艾逗笔<765532665@qq.com>
  4. */
  5. public function edit() {
  6. $this->addCrumb('系统管理', U('Index/index'), '')
  7. ->addCrumb('角色管理', U('Role/lists'), '')
  8. ->addCrumb('编辑角色', '', 'active')
  9. ->addNav('编辑角色', '', 'active')
  10. ->setModel('rbac_role')
  11. ->addFormField('name', '角色名称', 'text', array('placeholder'=>'管理员'))
  12. ->addFormField('remark', '角色描述', 'textarea')
  13. ->addFormField('type', '角色类型', 'radio', array('options'=>array('system_manager'=>'系统管理员','admin_manager'=>'后台管理员','mp_manager'=>'公众号管理员'),'tip'=>'在没有设置角色访问授权的前提下,角色类型起作用。系统管理员可以进入系统后台和公众号管理后台,后台管理员仅能进入系统后台,公众号管理员仅能进入公众号管理后台'))
  14. ->addFormField('status', '状态', 'radio', array('options'=>array(0=>'禁用',1=>'正常')))
  15. ->addValidate('name', 'require', '角色名称不能为空', 1, 'regex', 3)
  16. ->setFormData(M('rbac_role')->find(I('id')))
  17. ->setEditMap(array('id'=>I('get.id')))
  18. ->common_edit();
  19. }

模型实现

  1. $model['edit_map'] = array('id'=>I('get.id'));

在使用通用数据编辑模板保存数据的时候必须要指定edit_model,否则数据将不会保存成功。如果edit_map的条件中需要用到当前浏览器传递的参数的时候,必须要指定参数获取方式,例如此例必须要用I('get.id')而不能用I('id')