联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
关于网站表单发布后的回调,前端发布回调
类型:迅睿CMS 更新时间:2021-02-22 11:37:48

PHP程序里面

各位大神,求助下,关于网站表单发布后的回调,前端发布回调,参考:https://www.xunruicms.com/doc/897.html 写回调, 没问题,但是如果我是在网站会员中心发布的网站表单,就不能回调了,也就是这个地址发布的可以回调:http://ooxx.com/index.php?s=form&c=zixun&m=post 但是这个地址发布的不能回调http://ooxx.com/index.php?s=member&app=form&c=zixun&m=add。求助了下老大,老大说会员中心的网站表单发布没有写回调方法,只能在这边求助下大神们,我需要在会员中心网站表单发布后,调用回调完成另外一个表的更新和消息的发送。有什么方法可以做到,谢谢了!

回帖
  • 官方研发技术-实习
    #1楼    官方研发技术-实习
    2021-02-20 17:48:38
    Chrome 0
    发一下控制器的代码,index.php?s=member&app=form&c=zixun&m=add。和前端控制器稍微改下就行了
  • 郑中建
    #2楼    郑中建
    2021-02-20 17:57:47
    Chrome 0
    控制器里面加一个这个啊,一样的原理
    // 新增回调函数
         protected function _Call_Post($data) {
            $cp = parent::_Call_Post($data);
            if ($cp['code']) {
                // 这里写 提交成功时的 你的程序代码
                $this->_json($cp['code'], '提交表单成功', $cp['data']);
            } else {
                $this->_json(0, '提交失败', $cp['data']);
            }
        }
  • 丛林灰太狼
    #3楼    丛林灰太狼
    2021-02-20 17:57:52
    Chrome 0
    官方研发技术-实习 大神,您好,我复制了个add方法,改名为hufu。代码如下,麻烦您看下!
    public function hufw() {
        $qid = \Phpcmf\Service::L('input')->get('qid');
        $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
    
        if(IS_POST){
            $_POST["data"]["title"] = $cc["title"];
            $_POST["data"]["glzlid"] = $cc["glzlid"];
            $_POST["data"]["sjlx"] = '1';
            list($tpl) = $this->_Post(0);
        }
    
        \Phpcmf\Service::V()->assign([
            'cc' => $cc,
        ]);
        \Phpcmf\Service::V()->display('form_hf.html');
    }
    
        // 新增回调函数
        protected function _Call_Post($data) {
            $cp = parent::_Call_Post($data);
            //自己业务处理
    //        exit("222");
            $qid = $data["1"]["hfwtid"];
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
            //更新关联问题的状态为已回复
            $dataa = array(
                'shifouhuifu' => '1',
            );
            \Phpcmf\Service::M()->db->table('1_form_zixun')->where('id', $qid)->update($dataa);
            $datab = array(
                'uid' => $cc["uid"],
                'author' => $cc["author"],
            );
            \Phpcmf\Service::L('Notice')->send_notice('item_0_2', $datab);
    
            if ($cp['code']) {
                // 这里写 提交成功时的 你的程序代码
                $this->_json($cp['code'], '提交表单成功', $cp['data']);
            } else {
                $this->_json(0, '提交失败', $cp['data']);
            }
        }
  • 官方研发技术-实习
    #4楼    官方研发技术-实习
    2021-02-20 17:59:45
    Chrome 0
    你这个代码不全面,需要把控制器的全部代码发来丛林灰太狼
  • 丛林灰太狼
    #5楼    丛林灰太狼
    2021-02-20 18:00:56
    Chrome 0
    郑中建 嗯,我就是加这个,但是不执行,在父级_Save方法中被拦截了,您可以试下,有可能是我姿势不对 😀
  • 丛林灰太狼
    #6楼    丛林灰太狼
    2021-02-20 18:03:52
    Chrome 0
    官方研发技术-实习 好呢 下面是全部代码,麻烦您看下
    <?php namespace Phpcmf\Controllers\Member;
    
    /**
     * 二次开发时可以修改本文件,不影响升级覆盖
     */
    
    class Zixun extends \Phpcmf\Member\Form
    {
    
        public function index() {
            $where = 'sjlx=0'; // 新的条件组合
            if ($this->init['where_list']) {
                $this->init['where_list'].= ' AND '.$where;
                // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
            } else {
                $this->init['where_list'] = $where;
            }
            $this->_Member_List();
        }
    
        public function add() {
            $this->_Member_Add();
        }
    
        public function hlist() {
            \Phpcmf\Service::V()->display('form_hlist.html');
        }
    
        //region 回复内容相关
        public function hufw() {
            $qid = \Phpcmf\Service::L('input')->get('qid');
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
    
            if(IS_POST){
                $_POST["data"]["title"] = $cc["title"];
                $_POST["data"]["sjlx"] = '1';
                list($tpl) = $this->_Post(0);
            }
    
            \Phpcmf\Service::V()->assign([
                'cc' => $cc,
            ]);
            \Phpcmf\Service::V()->display('form_hf.html');
        }
    
        // 新增回调函数
        protected function _Call_Post($data) {
            $cp = parent::_Call_Post($data);
            //自己业务处理
    //        exit("222");
            $qid = $data["1"]["hfwtid"];
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
            //更新关联问题的状态为已回复
            $dataa = array(
                'shifouhuifu' => '1',
            );
            \Phpcmf\Service::M()->db->table('1_form_zixun')->where('id', $qid)->update($dataa);
            $datab = array(
                'uid' => $cc["uid"],
                'author' => $cc["author"],
            );
            \Phpcmf\Service::L('Notice')->send_notice('item_0_2', $datab);
    
            if ($cp['code']) {
                // 这里写 提交成功时的 你的程序代码
                $this->_json($cp['code'], '提交表单成功', $cp['data']);
            } else {
                $this->_json(0, '提交失败', $cp['data']);
            }
        }
        //endregion
    
        public function edit() {
            $this->_Member_Edit();
        }
    
        public function order_edit() {
            $this->_Member_Order();
        }
    
        public function del() {
            $this->_Member_Del();
        }
    }
  • 官方研发技术-实习
    #7楼    官方研发技术-实习
    2021-02-20 18:10:01
    Chrome 0
    <?php namespace Phpcmf\Controllers\Member;
    
    /**
     * 二次开发时可以修改本文件,不影响升级覆盖
     */
    
    class Zixun extends \Phpcmf\Member\Form
    {
    
        public function index() {
            $where = 'sjlx=0'; // 新的条件组合
            if ($this->init['where_list']) {
                $this->init['where_list'].= ' AND '.$where;
                // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
            } else {
                $this->init['where_list'] = $where;
            }
            $this->_Member_List();
        }
    
        public function add() {
            $this->_Member_Add();
        }
    
        public function hlist() {
            \Phpcmf\Service::V()->display('form_hlist.html');
        }
    
        //region 回复内容相关
        public function hufw() {
            $qid = \Phpcmf\Service::L('input')->get('qid');
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
    
            if(IS_POST){
                $_POST["data"]["title"] = $cc["title"];
                $_POST["data"]["sjlx"] = '1';
                list($tpl) = $this->_Post(0);
            }
    
            \Phpcmf\Service::V()->assign([
                'cc' => $cc,
            ]);
            \Phpcmf\Service::V()->display('form_hf.html');
        }
    
        protected function _Format_Data($id, $data, $old) {
            $cp = parent::_Format_Data($id, $data, $old) ;
            //自己业务处理
    //        exit("222");
            $qid = $data["1"]["hfwtid"];
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
            //更新关联问题的状态为已回复
            $dataa = array(
                'shifouhuifu' => '1',
            );
            \Phpcmf\Service::M()->db->table('1_form_zixun')->where('id', $qid)->update($dataa);
            $datab = array(
                'uid' => $cc["uid"],
                'author' => $cc["author"],
            );
            \Phpcmf\Service::L('Notice')->send_notice('item_0_2', $datab);
    
        }
        //endregion
    
        public function edit() {
            $this->_Member_Edit();
        }
    
        public function order_edit() {
            $this->_Member_Order();
        }
    
        public function del() {
            $this->_Member_Del();
        }
    }
  • 丛林灰太狼
    #8楼    丛林灰太狼
    2021-02-20 18:46:42
    Chrome 0
    官方研发技术-实习 大神,不好意思 刚去做饭了,我试了下 您给我的代码,确实可以回调了,但是有个问题,发布表单信息的时候,点击按钮没提示了,就闪一下,我打开数据库看了下。信息没保存下来,只是执行了回调的程序,本身提交的信息没保存下来,我把回调的注释了就正常了。
    protected function _Format_Data($id, $data, $old) {
        $cp = parent::_Format_Data($id, $data, $old);
    麻烦您再看下 谢谢了
  • 官方研发技术-实习
    #9楼    官方研发技术-实习
    2021-02-20 18:56:51
    Chrome 0
    protected function _Format_Data($id, $data, $old) {
            $cp = parent::_Format_Data($id, $data, $old) ;
            //自己业务处理
    //        exit("222");
            $qid = $data["1"]["hfwtid"];
            $cc = \Phpcmf\Service::M()->db->table(SITE_ID."_form_zixun")->where("id", $qid)->get()->getRowArray();
            //更新关联问题的状态为已回复
            $dataa = array(
                'shifouhuifu' => '1',
            );
            \Phpcmf\Service::M()->db->table('1_form_zixun')->where('id', $qid)->update($dataa);
            $datab = array(
                'uid' => $cc["uid"],
                'author' => $cc["author"],
            );
            \Phpcmf\Service::L('Notice')->send_notice('item_0_2', $datab);
            return $cp;
    
        }
    满意答案
  • 丛林灰太狼
    #10楼    丛林灰太狼
    2021-02-20 20:06:59
    Chrome 0
    官方研发技术-实习 谢谢官方大神,已经OK了,还有个小问题咨询您下,我想自定义网站表单提交后的提示文字,如何自定义,求指导 谢谢!
  • 丛林灰太狼
    #11楼    丛林灰太狼
    2021-02-22 11:37:48
    Chrome 0
    @官方研发技术-实习:完美,多谢官方技术支持!