联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
插件之定义字段复选框多选保存报错
类型:迅睿CMS 更新时间:2020-05-10 21:50:22

PHP程序里面

插件之定义字段复选框多选保存报错

image

image

image

image

image


这个要怎么处理

PHP文件:
URL地址:


插件名称:

回帖
  • #1楼    迅睿框架创始人
    2020-05-10 11:14:59
    Chrome 0
    什么是插件之定义字段复选框多选保存报错
  • 梦幻
    #2楼    梦幻
    2020-05-10 11:18:28
    Chrome 0
    自己做的一个表单插件 自定义字段复选框多选保存报错回复迅睿框架创始人
  • #3楼    迅睿框架创始人
    2020-05-10 11:19:47
    Chrome 0

    image
    点提交按钮会弹出一些字母,看看内容
  • 梦幻
    #4楼    梦幻
    2020-05-10 11:27:08
    Chrome 0

    image
    回复迅睿框架创始人
  • #5楼    迅睿框架创始人
    2020-05-10 11:33:47
    Chrome 0

    image
    需要格式化一下
  • 梦幻
    #6楼    梦幻
    2020-05-10 11:40:46
    Chrome 0

    image

    image

    image
    加了还是报错 选择一个不会报错 但是读取不出来回复迅睿框架创始人
  • #7楼    迅睿框架创始人
    2020-05-10 11:43:11
    Chrome 0
    看下错微软日志详情
  • 欢喜哥
    #8楼    欢喜哥
    2020-05-10 11:45:27
    Chrome 0
    日志的重要性,不看日志找不出问题所在的
  • 梦幻
    #9楼    梦幻
    2020-05-10 11:46:36
    Chrome 0

    image

    image
    回复迅睿框架创始人
  • 梦幻
    #10楼    梦幻
    2020-05-10 11:48:16
    Chrome 0
    这个是哪里的问题欢喜哥
  • 易学习
    #11楼    易学习
    2020-05-10 11:48:43
    Chrome 0

    image
    很明显了,这个字段的问题
  • 梦幻
    #12楼    梦幻
    2020-05-10 11:54:07
    Chrome 0
    这个怎么处理易学习
  • 易学习
    #13楼    易学习
    2020-05-10 11:56:17
    Chrome 0
    把全部控制器的代码发来看看,部分代码很难看出问题梦幻
  • 梦幻
    #14楼    梦幻
    2020-05-10 12:03:40
    Chrome 0

    image

    image
    易学习
  • 易学习
    #15楼    易学习
    2020-05-10 12:09:23
    Chrome 0
    加一个$data['xxxx'] = dr_array2string($data['xxxx']);save里面
  • 梦幻
    #16楼    梦幻
    2020-05-10 12:16:21
    Chrome 0
    这个可以改成只要是复选框就格式处理不指定单个字段名称易学习
  • #17楼    迅睿框架创始人
    2020-05-10 12:16:27
    Chrome 0
    正解,使用了save方法,format_data就没效果了易学习
  • 梦幻
    #18楼    梦幻
    2020-05-10 12:23:59
    Chrome 0
    这个怎么用 回复迅睿框架创始人
  • 易学习
    #19楼    易学习
    2020-05-10 16:51:50
    Chrome 0

    把全部控制器的代码发来看看,部分代码很难看出问题

    梦幻不要截图,全部发代码,我改改应该就可以了,很明显是没有格式化数组

  • 梦幻
    #20楼    梦幻
    2020-05-10 17:03:14
    Chrome 0
    <?php namespace Phpcmf\Controllers\Admin;class Home extends \Phpcmf\Table{ public function __construct(...$params) { parent::__construct(...$params); \Phpcmf\Service::V()->assign('menu', \Phpcmf\Service::M('auth')->_admin_menu( [ '表单管理' => [APP_DIR.'/home/index', 'fa fa-area-chart'], ] )); // 表单显示名称 $this->name = dr_lang('表单'); // 模板前缀(避免混淆) $this->tpl_prefix = 'config_'; // 用于表储存的字段,后台可修改的表字段 $this->field = \Phpcmf\Service::L('cache')->get('xcrm'.'-field'); $field = array (); // 初始化数据表 $this->_init([ 'table' => 'xcrm_customer', // (不带前缀的)表名字 'fields' => $field, 'field' => $this->field, // 可查询的字段 'order_by' => 'id desc', // 列表排序,默认的排序方式 'date_field' => 'inputtime', // 按时间段搜索字段,没有时间字段留空 ]); // 把公共变量传入模板 \Phpcmf\Service::V()->assign([ // 搜索字段 'fields' =>$field, 'field' => $this->field, 'is_time_where' => $this->init['date_field'], // 后台的菜单 'menu' => \Phpcmf\Service::M('auth')->_admin_menu( [ $this->name => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-code'], '添加' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'], '修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'], ]), ]); } // 查看列表 public function index() { list($tpl, $data) = $this->_List(); \Phpcmf\Service::V()->display('config_list.html'); } // 添加内容 public function add() { list($tpl ,$data) = $this->_Post(0); \Phpcmf\Service::V()->display('config_add.html'); } // 修改内容 public function edit() { $id = intval(\Phpcmf\Service::L('Input')->get('id')); list($tpl, $data) = $this->_Post($id); if (!$data) { $this->_admin_msg(0, dr_lang('内容不存在')); } \Phpcmf\Service::V()->display($tpl); } //分配 public function me_edit() { $in = $ids =[]; $ids = \Phpcmf\Service::L('input')->get_post_ids(); foreach ($ids as $i) { $i && $in[] = intval($i); } if($ids){ $uid = \Phpcmf\Service::L('input')->post('uid'); if($uid != 0){ $data = array( 'uid' => $uid, ); \Phpcmf\Service::M()->db->table('xcrm_customer')->whereIn('id', $in)->update($data); $this->_json(1, dr_lang('操作成功')); }else{ $this->_json(0, dr_lang('没选择用户')); } }else{ $this->_json(0, dr_lang('没选择数据')); } } // 删除内容 public function del() { $this->_Del( \Phpcmf\Service::L('Input')->get_post_ids(), function($rows) { // 删除前的验证 return dr_return_data(1, 'ok', $rows); }, function($rows) { // 删除后的处理 foreach($rows as $t){ $cid = (int)$t['id']; \Phpcmf\Service::M()->table('xcrm_record')->where('cid', $cid)->delete(); } return dr_return_data(1, 'ok'); }, \Phpcmf\Service::M()->dbprefix($this->init['table']) ); } /** * 获取内容 * $id 内容id,新增为0 * */ protected function _Data($id = 0) { $row = parent::_Data($id); // 这里可以对内容进行格式化显示操处理 return $row; } // 格式化保存数据 protected function _Format_Data($id, $data, $old) { if (!$id) { // 当提交新数据时,把当前时间插入进去 $data[1]['inputtime'] = SYS_TIME; } //$data[1]['dingjin'] = dr_array2string($data[1]['dingjin']); //print_r($data);exit; return $data; } // 保存内容 protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) { $data = \Phpcmf\Service::L('input')->post('data'); return parent::_Save($id, $data, $old, function($id, $data, $old){ // 验证数据 $data['dingjin'] = dr_array2string($data['dingjin']); // 保存之前执行的函数,并返回新的数据 if (!$id) { // 当提交新数据时,把当前时间插入进去 $data['inputtime'] = SYS_TIME; } if ($data['updatetime']) { $data['updatetime'] = strtotime($data['updatetime']); } return dr_return_data(1, null, $data); }, function ($id, $data, $old) { // 保存之后执行的动作 if($data['follow']){ $datas = array( 'oid' => $data['oid'], 'cid' => $id, 'content' => $data['follow'], 'inputtime' => SYS_TIME, ); \Phpcmf\Service::M()->db->table('xcrm_record')->insert($datas); } }); } // 后台批量保存排序值 public function order_edit() { $this->_Display_Order( intval(\Phpcmf\Service::L('Input')->get('id')), intval(\Phpcmf\Service::L('Input')->get('value')), function ($r) { \Phpcmf\Service::M('xcrm', APP_DIR)->cache(); } ); } }易学习
  • 易学习
    #21楼    易学习
    2020-05-10 17:33:26
    Chrome 0
    <?php namespace Phpcmf\Controllers\Admin;
    
    class Home extends \Phpcmf\Table
    
    {
    
    	
    
    	public function __construct(...$params) {
    
    		parent::__construct(...$params);
    
    		\Phpcmf\Service::V()->assign('menu', \Phpcmf\Service::M('auth')->_admin_menu(
    
    			[
    
    				'表单管理' => [APP_DIR.'/home/index', 'fa fa-area-chart'],
    
    			]
    
    		));
    
    		// 表单显示名称
    
    		$this->name = dr_lang('表单');
    
    		// 模板前缀(避免混淆)
    
    		$this->tpl_prefix = 'config_';
    
    		// 用于表储存的字段,后台可修改的表字段
    
    		$this->field = \Phpcmf\Service::L('cache')->get('xcrm'.'-field');
    
    		$field = array ();
    
    		// 初始化数据表
    
    		$this->_init([
    
    			'table' => 'xcrm_customer',  // (不带前缀的)表名字
    
    			'fields' => $field,
    
    			'field' => $this->field, // 可查询的字段
    
    			'order_by' => 'id desc', // 列表排序,默认的排序方式
    
    			'date_field' => 'inputtime', // 按时间段搜索字段,没有时间字段留空
    
    		]);		
    
    		// 把公共变量传入模板
    
    		\Phpcmf\Service::V()->assign([
    
    			// 搜索字段
    
    			'fields' =>$field,
    
    			'field' => $this->field,
    
    			'is_time_where' => $this->init['date_field'],
    
    			// 后台的菜单
    
    			'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
    
    				[
    
    					$this->name => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-code'],
    
    					'添加' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'],
    
    					'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'],
    
    				]),
    
    		]);
    
    	}
    
    	// 查看列表  
    
    	public function index() {
    
    		
    
    		list($tpl, $data) = $this->_List();
    
    			
    
    	    \Phpcmf\Service::V()->display('config_list.html');
    
    	}
    
    	
    
    	// 添加内容
    
    	public function add() {		
    
    	    list($tpl ,$data) = $this->_Post(0);		
    
    	    \Phpcmf\Service::V()->display('config_add.html');
    
    	}
    
    	
    
    	// 修改内容
    
    	public function edit() {
    
    		$id = intval(\Phpcmf\Service::L('Input')->get('id'));
    
    		list($tpl, $data) = $this->_Post($id);
    
    		
    
    		if (!$data) {
    
    		    $this->_admin_msg(0, dr_lang('内容不存在'));
    
    		}
    
    		
    
    	    \Phpcmf\Service::V()->display($tpl);
    
    	}
    
    	
    
    	//分配
    
    	public function me_edit() {
    
    		$in = $ids =[];
    
    		$ids = \Phpcmf\Service::L('input')->get_post_ids();
    
    		foreach ($ids as $i) {
    
    			$i && $in[] = intval($i);
    
    		}
    
    		if($ids){
    
    			$uid = \Phpcmf\Service::L('input')->post('uid');
    
    			if($uid != 0){
    
    				$data = array(
    
    					'uid' => $uid,
    
    				);			
    
    				\Phpcmf\Service::M()->db->table('xcrm_customer')->whereIn('id', $in)->update($data);
    
    				$this->_json(1, dr_lang('操作成功'));
    
    			}else{
    
    				$this->_json(0, dr_lang('没选择用户'));
    
    			}
    
    		}else{
    
    			$this->_json(0, dr_lang('没选择数据'));
    
    		}
    
    	}
    
    		
    
    	// 删除内容
    
    	public function del() {
    
    	    $this->_Del(
    
    	        \Phpcmf\Service::L('Input')->get_post_ids(),
    
    	        function($rows) {
    
    	            // 删除前的验证
    
    				
    
    	            return dr_return_data(1, 'ok', $rows);
    
    	        },
    
    	        function($rows) {
    
    	            // 删除后的处理	
    
    				foreach($rows as $t){
    
    					$cid = (int)$t['id'];
    
    					\Phpcmf\Service::M()->table('xcrm_record')->where('cid', $cid)->delete();
    
    				}
    
    	            return dr_return_data(1, 'ok');
    
    	        },
    
    	        \Phpcmf\Service::M()->dbprefix($this->init['table'])
    
    	    );
    
    	}
    
    	
    
    	
    
    	
    
    	// 保存内容
    
    	protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) {
    
    	    $data = \Phpcmf\Service::L('input')->post('data');
    
    	    return parent::_Save($id, $data, $old, function($id, $data, $old){
    
    	        // 验证数据
    
    			
    
    			$data['dingjin'] = dr_array2string($data['dingjin']);
    
    	        // 保存之前执行的函数,并返回新的数据
    
    	        if (!$id) {
    
    	            // 当提交新数据时,把当前时间插入进去
    
    	            $data['inputtime'] = SYS_TIME;
    
    	        }
    
    			if ($data['updatetime']) {
    
    			    $data['updatetime'] = strtotime($data['updatetime']);
    
    			}
    			
    			print_r($data);exit;
    
    	        return dr_return_data(1, null, $data);
    
    	    }, function ($id, $data, $old) {
    
    	        // 保存之后执行的动作
    
    			if($data['follow']){
    
    				$datas = array(
    
    					'oid' => $data['oid'],
    
    					'cid' => $id,
    
    					'content' => $data['follow'],
    
    					'inputtime' => SYS_TIME,
    
    				);
    
    				\Phpcmf\Service::M()->db->table('xcrm_record')->insert($datas);
    
    			}
    
    			
    
    	    });
    
    	}
    
    	
    
    	// 后台批量保存排序值
    
    	public function order_edit() {
    
    		$this->_Display_Order(
    
    			intval(\Phpcmf\Service::L('Input')->get('id')),
    
    			intval(\Phpcmf\Service::L('Input')->get('value')),
    
    			function ($r) {
    
    				\Phpcmf\Service::M('xcrm', APP_DIR)->cache();
    
    			}
    
    		);
    
    	}
    
    	
    
    }
  • 梦幻
    #22楼    梦幻
    2020-05-10 17:44:52
    Chrome 0
    新添加的复选框还是要添加了才可以怎么才能只要是复选框都可以易学习
  • 易学习
    #23楼    易学习
    2020-05-10 17:47:29
    Chrome 0
    可以加我QQ远程,我做了无数次table类的控制器入库了
  • 梦幻
    #24楼    梦幻
    2020-05-10 17:52:59
    Chrome 0
    你QQ好多
    易学习
  • 九天网络(JiuDay)
    #25楼    九天网络(JiuDay)
    2020-05-10 20:39:01
    Chrome 0
    查询下 是否是数组  is_array 如果是数组就dr_array2string 转换一下
  • 梦幻
    #26楼    梦幻
    2020-05-10 20:46:29
    Chrome 0
    能给个样本么九天网络(JiuDay)
  • 九天网络(JiuDay)
    #27楼    九天网络(JiuDay)
    2020-05-10 21:03:35
    Chrome 0
    我也是很服了你。你另一个帖子 解决了。倒是留下你的解决方法和不行的原因。前人栽树 后人好乘凉呀。 下次别人也遇到同样需求 最快的能解决不是。你这个我没法给你样本 你自己想吧。思路给你了
  • 梦幻
    #28楼    梦幻
    2020-05-10 21:20:58
    Chrome 0
    我那个就用的你发的方法 我最开始条件写错了九天网络(JiuDay)
  • 九天网络(JiuDay)
    #29楼    九天网络(JiuDay)
    2020-05-10 21:41:58
    Chrome 0
            foreach ($data as $name => $value) {
                if (is_array($data[$name])) {
                    $data[$name] = dr_array2string($data[$name]);
                }
            }
    应该是这样 你自己测试下
    满意答案
  • 梦幻
    #30楼    梦幻
    2020-05-10 21:50:22
    Chrome 0
    @九天网络(JiuDay):谢谢了 完美解决