迅睿CMS 模块怎么建:App.php 里那几个必填项到底管什么

· 迅睿CMS · 阅读 15
摘要

迅睿CMS里「应用」和「模块」共用 App.php 文件却不是一回事,选错了后面要推倒重来。这篇逐项过一遍 App.php 里的 name、目录名、类型、所属应用这几个关键项各自决定什么,模块建好之后为什么前台没有入口、菜单和内容模型为什么必须跟着一起建,以及克隆模块和新建模块的区别。

上一篇拆完目录,这篇讲建模块。迅睿的「模块」和「应用」是同一个东西——你在后台点「创建应用」,得到的是一套可装卸的骨架;点「创建模块」,得到的是一个带内容表的应用。两者共用 App.php,只是后者会自动生成数据表和字段管理界面。

一、两种创建方式,别选错

后台「模块 → 应用管理」里有两个入口,很多人第一次就选岔:

  • 创建应用:纯功能应用,没有内容表。适合做接口、工具页、数据看板。
  • 创建模块:自带内容主表(模块名_内容表、模块名_栏目表、模块名_分类表),适合做文章、产品、下载这类有列表和详情的内容型站点。

选错不是不能改,但要把已建的表和路由全部重来,代价比一开始想清楚大得多。判据很简单:这个东西需不需要「一条条内容 + 列表页 + 详情页」?需要就建模块,不需要就建应用。

二、App.php 必填项逐条说

生成的 dayrui/App/你的模块/Config/App.php 大概长这样:

<?php
return [
    'name'        => '新闻中心',
    'type'        => 'module',
    'uri'         => 'news',
    'version'     => '1.0',
    'author'      => 'yourname',
    'dirname'     => 'news',
    'share'       => 1,
    'related'     => [],
];
键作用踩坑点
name后台显示名可改,不影响数据
typemodule / app建完别改,改了加载器走错分支
uriURL 里的模块标识改了旧链接全 404,需配重定向
dirname目录名,须与 App 下文件夹一致手改目录名必同步改这里,否则应用消失
related依赖的其它模块/应用漏写会导致依赖的菜单、权限不加载

最常见的两个事故:手工拷贝应用目录改名,忘了改 dirname ——后台列表里直接看不到这个应用;改了 uri 却没做重定向——搜索引擎里攒的链接一夜归零。

三、Routes.php 和查询参数式路由

迅睿的路由文件不是常见的正则路径匹配,而是把 URL 段映射到 模块/控制器/方法:

<?php
return [
    'show/(:num)'   => 'show/index/$1',
    'list/(:num)'   => 'list/index/$1',
];

但注意——默认访问形式仍是 index.php?s=news&c=show&id=5。Routes.php 只在开启伪静态、且入口做了重写之后才起作用。所以调路由前先确认伪静态规则已经生效,否则你在 Routes.php 里改半天,访问带 s= 的老地址依然原样返回。

四、Menu.php:后台菜单挂不上就是这里

<?php
return [
    [
        'name'  => '新闻管理',
        'uri'   => 'news/admin/index',
        'icon'  => 'fa fa-newspaper-o',
    ],
    [
        'name'  => '添加新闻',
        'uri'   => 'news/admin/add',
        'pmenu' => '新闻管理',
    ],
];

pmenu 指向父菜单的 name,不是 uri。写成 uri 会得到一个永远折叠不开的孤立项。菜单改动后必须清缓存,否则 cache/ 里的旧菜单表还在。

五、安装与卸载

模块根目录的 Install.php 负责建表、写初始数据、注册权限。两个要点:

  • 建表用框架的数据库迁移接口,别手写裸 SQL,否则字段前缀在多站点下会错
  • 卸载逻辑里不要默认删数据表,做成「保留数据」选项,用户误删过一次就再也不敢装了

六、一个最小可跑顺序

  1. 后台创建模块,填模块名和 uri
  2. 检查生成的 App.php,确认 dirname 与目录一致
  3. 去「模块 → 内容模型」加字段
  4. 写 Menu.php,清缓存,确认后台菜单出现
  5. 前台访问 index.php?s=你的uri 验证路由通
  6. 再开伪静态,配重写规则

下一篇讲模板标签——{dr_...} 那套语法和它背后的查询缓存。