全局表单编辑钩子问题

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

迅睿系统漏洞

多语言翻译Seolang
多语言翻译Seolang(2026-09-21)
1. 新增译文数据备份恢复页面,支持断点续传 2. 多语言声明中心...
AI文章生成器
AI文章生成器(2026-09-20)
任务拆分独立配置 新增AI生成关键词 新增指令模板 新增品牌信...
GEO系统
GEO系统(2026-09-20)
后台 AEO 与运营端对齐:区域、跑批、CSV、补强、剧本均可在迅睿...
GeoSeo工具箱
GeoSeo工具箱(2026-09-18)
修正菜单规范
后台二次登陆验证
后台二次登陆验证(2026-09-18)
新增邮箱验证 新增短信验证
京东云短信
京东云短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
创蓝短信
创蓝短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
火山引擎短信
火山引擎短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
外贸多语言建站
外贸多语言建站(2026-09-17)
优化独立内容过滤机制