BaseAddonModule.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace common\components;
  3. use Yii;
  4. use yii\base\Module;
  5. use common\helpers\ExecuteHelper;
  6. use common\helpers\AddonHelper;
  7. use common\enums\AppEnum;
  8. /**
  9. * Class BaseAddonModule
  10. * @package common\components
  11. * @author qimall
  12. */
  13. class BaseAddonModule extends Module
  14. {
  15. /**
  16. * 插件名称
  17. *
  18. * @var string
  19. */
  20. public $name;
  21. /**
  22. * 真实应用id
  23. *
  24. * @var string
  25. */
  26. public $app_id;
  27. /**
  28. * @throws \yii\base\InvalidConfigException
  29. * @throws \yii\web\NotFoundHttpException
  30. */
  31. public function init()
  32. {
  33. parent::init();
  34. // 模块文件是否存在
  35. $addons_dir = Yii::getAlias('@addons');
  36. if(!is_dir($addons_dir.'/'.$this->name)) return;
  37. // 初始化模块
  38. AddonHelper::initAddon($this->name);
  39. $addon = Yii::$app->params['addon'];
  40. // 初始化真实应用id
  41. Yii::$app->params['realAppId'] = $this->app_id;
  42. // 初始化命名空间
  43. $this->controllerNamespace = "addons\\$this->name\\$this->app_id\controllers";
  44. // 初始化默认路径
  45. if (!in_array($this->app_id, AppEnum::api())) {
  46. // 处理封面入口
  47. // $this->controllerMap['addons'] = 'backend\controllers\AddonsController';
  48. if (file_exists(Yii::getAlias("@addons/$this->name/$this->app_id"))) {
  49. $this->setBasePath("@addons/$this->name/$this->app_id");
  50. }
  51. }
  52. // 初始化子模块
  53. if (
  54. isset($addon->default_config[Yii::$app->id]['modules']) &&
  55. !empty($addon->default_config[Yii::$app->id]['modules'])
  56. ) {
  57. $this->setModules($addon->default_config[Yii::$app->id]['modules']);
  58. }
  59. if (!empty($addon['bootstrap'])) {
  60. ExecuteHelper::map($addon['bootstrap'], 'run', $addon);
  61. }
  62. }
  63. }