// +---------------------------------------------------------------------- declare(strict_types=1); namespace app\backend\controller; use app\backend\library\MenuRegistry; /** * 权限节点自愈(控制器侧入口) * * 核心后台的菜单就是 backend_power 里的一条记录。菜单定义集中在 * MenuRegistry(避免散落各控制器),本 trait 与 BackendSchemaMiddleware * 共用同一个 MenuRegistry::ensure(),两处触发、一份定义: * - 中间件:每个 /admin/* 请求补录 ⇒ 菜单「自己出现」,管理员不必手工加节点; * - 控制器:直接访问页面时的双保险。 * * 幂等 + 静默:已存在的节点不动(管理员可能改过名 / 排过序), * 权限表不可用或没写权限时一律吞掉,不能阻断业务。 * * @author ywxapp */ trait EnsuresPower { /** * 补录本应用的新增菜单与按钮节点 * @return void */ protected function ensureMenus(): void { MenuRegistry::ensure(); } }