迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架, 基于MIT开源许可协议发布,不限制商业使用,以多端互联为设计理念, 支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。
请问一下全局表单是否有form_edit_before 和 form_edit_after 这两个钩子?
插件教程:https://www.xunruicms.com/doc/app-710.html
<?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); } }
对应修改member中的控制器对吗?
<?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); } }