联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
编辑数据页面,字段控件代码 保存的时候不成功
类型:迅睿CMS 更新时间:2021-06-18 14:49:45

PHP程序里面

使用开发者工具创建的插件,编辑数据页面,我用了 字段控件代码


image

但是保存的时候不成功,在哪个文件格式化下时间,

public function edit() {
  $id = \Phpcmf\Service::L('input')->get('id');
  $data = \Phpcmf\Service::M('order', 'mqpay')->get($id);
  $field = [
            'paytime' => array (
    'name' => '支付时间',
    'fieldname' => 'paytime',
    'ismain' => '1',
    'fieldtype' => 'Date',
    'ismember' => '1',
   ),
   'status' => array (
    'name' => '支付时间',
    'fieldname' => 'status',
    'ismain' => '1',
    'fieldtype' => 'Radio',
    'ismember' => '1',
    'setting' => array (
     'option' => array (
      'options' => '未支付|inprogress
      已过期|expired
      已支付未通知|paid
      已完成|settled
      通知失败|unsettled',
     ),
    ),
   ),
        ];
  \Phpcmf\Service::V()->assign([
            'paytimefield' => dr_fieldform($field['paytime'], $data['paytime']),
   'statusfield' => dr_fieldform($field['status'], $data['status']),
        ]);
        list($tpl) = $this->_Post(intval(\Phpcmf\Service::L('input')->get('id')));
        \Phpcmf\Service::V()->display($tpl);


回帖
  • 迅睿粉丝
    #1楼    迅睿粉丝
    2021-06-18 07:33:35
    Chrome 0
    完整的控制器文件内容需要看看
  • 迅睿粉丝
    #2楼    迅睿粉丝
    2021-06-18 14:10:58
    Chrome 0
    官方研发技术-罗老师
  • 迅睿粉丝
    #3楼    迅睿粉丝
    2021-06-18 14:17:20
    Chrome 0
    控制器是开发者工具生成的,暂时只修改了上面代码
    <?php namespace Phpcmf\Controllers\Admin;
    /* *
     *
     * 本TableDemo的语法参考: http://help.phpcmf.net/445.html
     *
     * */
    class Order extends \Phpcmf\Table
    {
    
        public function __construct(...$params)
        {
            parent::__construct(...$params);
            // 表单显示名称
            $this->name = dr_lang('订单管理');
            // 模板前缀(避免混淆)
            $this->tpl_prefix = 'order_';
            // 用于表储存的字段,后台可修改的表字段
            $field = array (
      'id' => 
      array (
        'name' => '订单号',
        'fieldname' => 'id',
      ),
    );
            // 初始化数据表
            $this->_init([
                'table' => 'pay_order',  // (不带前缀的)表名字
                'field' => $field, // 可查询的字段
                'order_by' => 'id desc', // 列表排序,默认的排序方式
                'date_field' => 'createtime', // 按时间段搜索字段,没有时间字段留空
            ]);
    
            // 把公共变量传入模板
            \Phpcmf\Service::V()->assign([
                // 搜索字段
                'field' => $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) = $this->_List();
            \Phpcmf\Service::V()->display($tpl);
    		
        }
    
        // 添加内容
        public function add() {
            list($tpl) = $this->_Post(0);
            \Phpcmf\Service::V()->display($tpl);
        }
    
        // 修改内容
        public function edit() {
    		$id = \Phpcmf\Service::L('input')->get('id');
    		$data = \Phpcmf\Service::M('order', 'mqpay')->get($id);
    		$field = [
                'paytime' => array (
    				'name' => '支付时间',
    				'fieldname' => 'paytime',
    				'ismain' => '1',
    				'fieldtype' => 'Date',
    				'ismember' => '1',
    			),
    			'status' => array (
    				'name' => '支付时间',
    				'fieldname' => 'status',
    				'ismain' => '1',
    				'fieldtype' => 'Radio',
    				'ismember' => '1',
    				'setting' => array (
    					'option' => array (
    						'options' => '未支付|inprogress
    						已过期|expired
    						已支付未通知|paid
    						已完成|settled
    						通知失败|unsettled',
    					),
    				),
    			),
            ];
    		\Phpcmf\Service::V()->assign([
                'paytimefield' => dr_fieldform($field['paytime'], $data['paytime']),
    			'statusfield' => dr_fieldform($field['status'], $data['status']),
            ]);
            list($tpl) = $this->_Post(intval(\Phpcmf\Service::L('input')->get('id')));
            \Phpcmf\Service::V()->display($tpl);
        }
    
        // 删除内容
        public function del() {
            $this->_Del(
                \Phpcmf\Service::L('Input')->get_post_ids(),
                function($rows) {
                    // 删除前的验证
                    return dr_return_data(1, 'ok', $rows);
                },
                function($rows) {
                    // 删除后的处理
                    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;
            }
            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){
                // 验证数据
                /*
                if (!$data['title']) {
                    return dr_return_data(0, '标题不能为空!', ['field' => 'title']);
                }*/
                // 保存之前执行的函数,并返回新的数据
                if (!$id) {
                    // 当提交新数据时,把当前时间插入进去
                    //$data['inputtime'] = SYS_TIME;
                }
    
                return dr_return_data(1, null, $data);
            }, function ($id, $data, $old) {
                // 保存之后执行的动作
            });
        }
    
    }
    官方研发技术-罗老师
  • 迅睿粉丝
    #4楼    迅睿粉丝
    2021-06-18 14:19:35
    Chrome 0
    <?php namespace Phpcmf\Controllers\Admin;
    /* *
     *
     * 本TableDemo的语法参考: http://help.phpcmf.net/445.html
     *
     * */
    class Order extends \Phpcmf\Table
    {
    
        public function __construct(...$params)
        {
            parent::__construct(...$params);
            // 表单显示名称
            $this->name = dr_lang('订单管理');
            // 模板前缀(避免混淆)
            $this->tpl_prefix = 'order_';
            // 用于表储存的字段,后台可修改的表字段
            $field = array (
      'id' => 
      array (
        'name' => '订单号',
        'fieldname' => 'id',
      ),
    );
            // 初始化数据表
            $this->_init([
                'table' => 'pay_order',  // (不带前缀的)表名字
                'field' => $field, // 可查询的字段
                'order_by' => 'id desc', // 列表排序,默认的排序方式
                'date_field' => 'createtime', // 按时间段搜索字段,没有时间字段留空
            ]);
    
            // 把公共变量传入模板
            \Phpcmf\Service::V()->assign([
                // 搜索字段
                'field' => $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) = $this->_List();
            \Phpcmf\Service::V()->display($tpl);
    		
        }
    
        // 添加内容
        public function add() {
            list($tpl) = $this->_Post(0);
            \Phpcmf\Service::V()->display($tpl);
        }
    
        // 修改内容
        public function edit() {
    		$id = \Phpcmf\Service::L('input')->get('id');
    		$data = \Phpcmf\Service::M('order', 'mqpay')->get($id);
    		$field = [
                'paytime' => array (
    				'name' => '支付时间',
    				'fieldname' => 'paytime',
    				'ismain' => '1',
    				'fieldtype' => 'Date',
    				'ismember' => '1',
    			),
    			'status' => array (
    				'name' => '支付时间',
    				'fieldname' => 'status',
    				'ismain' => '1',
    				'fieldtype' => 'Radio',
    				'ismember' => '1',
    				'setting' => array (
    					'option' => array (
    						'options' => '未支付|inprogress
    						已过期|expired
    						已支付未通知|paid
    						已完成|settled
    						通知失败|unsettled',
    					),
    				),
    			),
            ];
    		\Phpcmf\Service::V()->assign([
                'paytimefield' => dr_fieldform($field['paytime'], $data['paytime']),
    			'statusfield' => dr_fieldform($field['status'], $data['status']),
            ]);
               // 初始化数据表
            $this->_init([
                'table' => 'pay_order',  // (不带前缀的)表名字
                'field' => $field, // 可查询的字段
                'order_by' => 'id desc', // 列表排序,默认的排序方式
                'date_field' => 'createtime', // 按时间段搜索字段,没有时间字段留空
            ]);
            list($tpl) = $this->_Post(intval(\Phpcmf\Service::L('input')->get('id')));
            \Phpcmf\Service::V()->display($tpl);
        }
    
        // 删除内容
        public function del() {
            $this->_Del(
                \Phpcmf\Service::L('Input')->get_post_ids(),
                function($rows) {
                    // 删除前的验证
                    return dr_return_data(1, 'ok', $rows);
                },
                function($rows) {
                    // 删除后的处理
                    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;
            }
            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){
                // 验证数据
                /*
                if (!$data['title']) {
                    return dr_return_data(0, '标题不能为空!', ['field' => 'title']);
                }*/
                // 保存之前执行的函数,并返回新的数据
                if (!$id) {
                    // 当提交新数据时,把当前时间插入进去
                    //$data['inputtime'] = SYS_TIME;
                }
    
                return dr_return_data(1, null, $data);
            }, function ($id, $data, $old) {
                // 保存之后执行的动作
            });
        }
    
    }
    加一句初始化表的代码不太熟悉二开的话,可以找官方开发,然后再分析分析官方的开发代码,这样自己也学会了开发技巧。
  • 迅睿粉丝
    #5楼    迅睿粉丝
    2021-06-18 14:27:50
    Chrome 0
    官方研发技术-罗老师 谢谢,不过好像问题理解错了。编辑页面保存时间字段时,无法保存成时间戳到数据库。
  • 迅睿粉丝
    #6楼    迅睿粉丝
    2021-06-18 14:29:33
    Chrome 0

    image
    这个代码区域可以用来格式化转换,比如使用函数把时间转化为数字再存储
    满意答案
  • 迅睿粉丝
    #7楼    迅睿粉丝
    2021-06-18 14:34:08
    Chrome 0
    if (!$id) {
        // 当提交新数据时,把当前时间插入进去
        //$data['inputtime'] = SYS_TIME;
        $data['paytime'] = strtotime($data['paytime']);
    }
    之前这样写过,没作用。
    官方研发技术-罗老师
  • 迅睿粉丝
    #8楼    迅睿粉丝
    2021-06-18 14:41:11
    Chrome 0
    你这个表示新发布内容会转换存储,修改内容不会
  • 迅睿粉丝
    #9楼    迅睿粉丝
    2021-06-18 14:42:35
    Chrome 0
    官方研发技术-罗老师 嗯对,找不到修改 格式化的方法- -
  • 迅睿粉丝
    #10楼    迅睿粉丝
    2021-06-18 14:46:41
    Chrome 0
    😓 楼主脑壳不会转弯吗,罗老师都指明了,只是没有明说,你把if去掉不就可以了?
  • 迅睿粉丝
    #11楼    迅睿粉丝
    2021-06-18 14:48:52
    Chrome 0
    唐突了,,刚睡醒!
  • 迅睿粉丝
    #12楼    迅睿粉丝
    2021-06-18 14:49:45
    Chrome 0
    @官方研发技术-罗老师:解决问题回复很快