全局表单编辑钩子问题

迅睿框架 更新 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主控制器,只须修改对应的表单控制器就行

迅睿系统漏洞

用户客户端
用户客户端(2026-11-05)
下载客户端 ZIP 时页面会弹出进度:正在写入站点地址、正在压缩、下...
PDF在线预览
PDF在线预览(2026-11-05)
屏蔽资源嗅探
站群分站系统
站群分站系统(2026-11-05)
分站编辑增加「经营信息」:电话、地址、营业时间、备案号。 页脚和 l...
可视化表单
可视化表单(2026-11-04)
短代码嵌入:正文 [xrforms id="1"] 渲染为表单 if...
泛解析站群系统
泛解析站群系统(2026-11-04)
指令支持插入地区占位符 新增 FAQ 标题池随机抽取 修复表头全...
GeoSeo排名助手
GeoSeo排名助手(2026-11-04)
更新排名算法,更稳定更快速
GeoSeo收录宝
GeoSeo收录宝(2026-11-03)
违禁词功能全打通 1. 全局总开关:一键控制整站违禁词功能是否生效...
SEO模板压缩伪原创
SEO模板压缩伪原创(2026-11-02)
增加对泛解析站群支持