/** * 获取模块Model * @return mixed|null */ public function getModuleModel() { if ($this->_moduleModel === null) { // 默认根据缓存的模块数据生成模块model $class = $this->module->moduleModelClass; $model = new $class(); $class::populateRecord($model, ModuleModel::models()[$this->id]); $this->setModuleModel($model); } return $this->_moduleModel; }
/** * 扩展模块表 */ public function initModuleTable() { $tableName = Module::tableName(); $this->createTable($tableName, ['id' => Schema::TYPE_STRING . "(20) NOT NULL DEFAULT '' COMMENT '模块ID'", 'name' => Schema::TYPE_STRING . "(50) NOT NULL DEFAULT '' COMMENT '模块名称'", 'type' => Schema::TYPE_STRING . "(20) NOT NULL DEFAULT '' COMMENT '模块类型'", 'category' => Schema::TYPE_STRING . "(20) NOT NULL DEFAULT '' COMMENT '模块类型'", 'version' => Schema::TYPE_STRING . "(10) NOT NULL DEFAULT '' COMMENT '模块版本'", 'ability' => Schema::TYPE_STRING . "(100) NOT NULL DEFAULT '' COMMENT '模块功能简述'", 'description' => Schema::TYPE_TEXT . " NOT NULL COMMENT '模块详细描述'", 'author' => Schema::TYPE_STRING . "(50) NOT NULL DEFAULT '' COMMENT '模块作者'", 'site' => Schema::TYPE_STRING . " NOT NULL DEFAULT '' COMMENT '模块详情地址'", 'admin' => Schema::TYPE_BOOLEAN . " NOT NULL DEFAULT '0' COMMENT '是否有后台界面'", 'migration' => Schema::TYPE_BOOLEAN . " NOT NULL DEFAULT '0' COMMENT '是否有迁移数据'", 'reply_rule' => Schema::TYPE_BOOLEAN . " NOT NULL DEFAULT '0' COMMENT '是否启用回复规则'", 'created_at' => Schema::TYPE_INTEGER . " UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间'", 'updated_at' => Schema::TYPE_INTEGER . " UNSIGNED NOT NULL DEFAULT '0' COMMENT '修改时间'"]); $this->addPrimaryKey('id', $tableName, 'id'); }
/** * 查找已安装的模块 * @return array|\yii\db\ActiveRecord[] */ public function findInstalledModules() { return Module::find()->indexBy('id')->all(); }