迅睿 CMS 插件开发:模块钩子与事件回调的挂载方式
摘要
迅睿的扩展方式和 Z-Blog、WP 都不太一样,它的钩子体系围绕内容模块和表单事件展开。理解这套结构,插件才写得下去。先搞清目录结构/dayrui/App/你的应用/ ├── Config/ │ ├── App.php
迅睿的扩展方式和 Z-Blog、WP 都不太一样,它的钩子体系围绕内容模块和表单事件展开。理解这套结构,插件才写得下去。
先搞清目录结构
/dayrui/App/你的应用/
├── Config/
│ ├── App.php 应用声明
│ ├── Routes.php 路由
│ └── Hooks.php 钩子挂载点
├── Controllers/ 控制器
├── Models/ 模型
└── Views/ 视图Config/Hooks.php 是核心,所有挂载都在这里声明。
钩子的声明方式
迅睿的钩子以数组形式返回,键是钩子名,值是回调类或闭包:
<?php
return [
'module_content_save' => function ($data) {
// 内容保存时触发
return $data;
},
];常用的几类钩子
module_content_save:内容新增/编辑后module_content_delete:内容删除时form_post_save:表单提交后member_register:会员注册时
几个实际问题
其一,钩子里拿不到模块配置。需要在应用初始化时手动加载,或者用 dr_module_cache() 取值。
其二,返回值不能省略。迅睿的部分钩子要求把入参原样返回,忘记 return 会导致后续流程拿到 null,页面直接空白。
其三,调试困难。不要用 var_dump 在钩子里打印,因为输出会混进 JSON 响应里,AJAX 请求全部解析失败。写进日志文件更稳。
上线前检查
- 钩子回调里有没有做权限校验
- 有没有直接拼 SQL,参数是否绑定
- 应用被禁用时,钩子是否优雅退出
所属专题
2026年10月20日 14:58
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日