业务经理

微信扫描以上二维码

028-61286886

技术咨询

全局表单编辑钩子问题

迅睿框架 更新 2026-02-04 15:05:41 学习狂人

请问一下全局表单是否有

form_edit_before 和 form_edit_after

这两个钩子?



方案

  • 开源社区创始人 #1 · 2026-02-03 06:32:09
    没有,因为表单form没有做修改功能,只有post钩子没有edit钩子
  • 学习狂人 #2 · 2026-02-03 10:34:50
    开源社区创始人 会员中心修改想执行修改后的动作如何操作呢,是自己写钩子吗?
  • 开源社区创始人 #3 · 2026-02-03 10:57:20
    满意答案
    不用,重写表单控制器就行了
  • 学习狂人 #4 · 2026-02-03 12:26:54
    开源社区创始人 比如我的表单控制器是baozhang.php

    image


    对应修改member中的控制器对吗?
  • 开源社区创始人 #5 · 2026-02-03 13:57:51
    对
  • 好好学习 #6 · 2026-02-03 15:45:24
    改控制器文件不影响升级的,随便改
  • 学习狂人 #7 · 2026-02-04 15:04:51
    <?php namespace Phpcmf\Controllers\Member;
    
    /**
     * 二次开发时可以修改本文件,不影响升级覆盖
     */
    
    class Ysbcd extends \Phpcmf\Member\Form
    {
        // 保存编辑前的旧数据
        protected $_old_data_for_hook = null;
    
        public function index() {
            $this->_Member_List();
        }
    
        public function add() {
            $this->_Member_Add();
        }
    
        public function edit() {
            // 获取编辑前的数据用于钩子
            $id = intval(\Phpcmf\Service::L('input')->get('id'));
            if ($id && IS_AJAX_POST) {
                $this->_old_data_for_hook = $this->_Data($id);
            }
            $this->_Member_Edit();
        }
    
        public function order_edit() {
            $this->_Member_Order();
        }
    
        public function del() {
            $this->_Member_Del();
        }
    
        /**
         * 重写 _Call_Post 方法,在保存完成后触发编辑钩子
         */
        protected function _Call_Post($data) {
            // 如果是编辑操作(有旧数据),触发编辑钩子
            if ($this->_old_data_for_hook) {
                // 合并主表和附表数据
                $new_data = [];
                if (isset($data[1]) && is_array($data[1])) {
                    $new_data = $data[1];
                }
                if (isset($data[0]) && is_array($data[0])) {
                    $new_data = array_merge($new_data, $data[0]);
                }
                
                // 触发编辑钩子
                \Phpcmf\Hooks::trigger('form_edit_after', $new_data, $this->_old_data_for_hook);
            }
            
            return dr_return_data(1, dr_lang('操作成功'), $data);
        }
    }
  • 学习狂人 #8 · 2026-02-04 15:05:41
    @开源社区创始人:实现了,原来不要修改form主控制器,只须修改对应的表单控制器就行

迅睿系统漏洞

GeoSeo工具箱
GeoSeo工具箱(2026-10-30)
新增城市落地页FAQ自定义 新增 Site Scan 分析报告并支...
外贸多语言建站
外贸多语言建站(2026-10-30)
修正对百度编辑器提取支持
AI文章生成器
AI文章生成器(2026-10-29)
任务插图设置数量
Bing站长数据
Bing站长数据(2026-10-29)
根据BING接口调整菜单 各个页面数据支持点击查看详情
按字段付费
按字段付费(2026-10-29)
按字段付费用于模块的字段设置一定的价格,当用户购买了此内容的字段时才...
泛解析站群系统
泛解析站群系统(2026-10-29)
AI队列增加清空按钮 表单提示语收敛 目录模式不接管主域名模板
账号注销
账号注销(2026-10-29)
用于用户中心的注销账号申请,后台审核通过后注销此账号。后台统一管理注...
邮件群发
邮件群发(2026-10-28)
修改模板的命名
自定义收款/捐款
自定义收款/捐款(2026-10-28)
自定义收款或捐款插件可以让用户快速创建付款或者捐款功能
CMS内容批量修改
CMS内容批量修改(2026-10-28)
后台批量修改文章内容的指定字段在插件后台可以任意指定字段