common目录是Yii2高级模板的核心共享层,供frontend、backend和console三端共用基础配置、模型与组件;其config/下main.php定义通用组件,params.php存全局参数,main-local.php作本地覆盖;models/放跨应用数据模型如User;mail/统一邮件模板;配置加载按common→应用层级顺序合并。

Yii2高级模板的common目录是整个项目的核心共享层,前后端(frontend/backend)和控制台(console)三个应用都依赖它加载基础配置、模型和通用组件。它的设计目标就是避免重复、保障一致性——比如数据库连接、用户模型、邮件模板、全局参数等,只要定义一次,三端都能直接使用。
common/config/ 是配置中枢
该目录下几个关键文件决定了“共用”的边界和灵活性:
-
main.php:定义所有环境共用的基础组件,如
db、user、mailer、cache等。这是三端默认加载的配置主体。 -
params.php:存放全局参数,例如
'adminEmail' => 'admin@example.com',可在任意应用中通过Yii::$app->params['adminEmail']调用。 -
main-local.php:本地覆盖配置,不会提交到版本库。常用于写入数据库账号密码、调试开关等敏感或环境相关设置,优先级高于
main.php。
common/models/ 是业务逻辑共享区
这里放的是跨应用使用的数据模型,典型如User.php、LoginForm.php、PasswordResetRequestForm.php等。它们不绑定具体控制器或视图,只负责数据验证、关系定义和基础行为。前端注册、后台用户管理、控制台批量导入,都可以复用同一个User模型的rules()和attributeLabels()。
common/mail/ 支持三端统一发信
邮件视图(如passwordResetToken.php)放在这个目录,意味着前端触发密码重置、后台手动发送通知、控制台定时发送报表,都可调用同一套HTML模板和文本模板,样式与内容保持一致,维护成本大幅降低。
注意配置加载顺序与覆盖机制
每个应用(如frontend/config/main.php)在加载自身配置时,会先合并common/config/main.php,再叠加common/config/main-local.php(如果存在),最后才合并本应用下的main-local.php。这种分层结构既保证了共享性,又保留了各端独立定制的空间——比如前端需要urlManager开启美化路由,而后端不需要,就在各自应用的main.php里单独配置即可,不影响common中的db或user组件。


















