回答(1)
已采纳最佳答案-
2026-10-25 回答 最佳答案
最小结构(
plugin/你的插件/):plugin.json:名称、版本、说明、autoload命名空间映射、config_fields(后台配置项);plugin.php:注册钩子、路由、菜单;src/:业务类。
注册钩子:
$plugin->hook('content_detail', 'Plugin\\Demo\\Hooks@onContentDetail', 10);后台路由必须写在
$plugin->route()回调里,并显式挂 AdminAuth 中间件(不挂就是未授权访问):$plugin->route(function ($router) { $router->group(array( 'prefix' => 'admin', 'middleware' => array('App\\Middleware\\AdminAuth'), ), function ($router) { $router->get('/plugin/demo', 'Plugin\\Demo\\AdminController@index'); }); }, 60);五条纪律:
- 插件不改动核心文件,只用钩子;
- 后台路由一律带鉴权;
- 写操作必须过 CSRF(表单带
{$csrf}); - 富文本入库走统一入口,不自己拼 SQL;
- 别回显异常
$e->getMessage()给前端。
改完执行
php aucms cache:rebuild;自己写 CLI 脚本时记得\plugin()->boot(),否则钩子不注册,功能静默失效。
写回答
该问题已解决,不再接受新的采纳。