Просмотр исходного кода

refactor(extension): 修改扩展配置表单返回类型为Collection

- 将getExtensionConfigForm方法的返回类型从array改为Collection
- 在读取扩展配置后触发事件时使用Collection实例
- 新增针对特定模块的扩展配置读取后事件
- 更新文档说明新增的钩子事件格式
runphp 4 месяцев назад
Родитель
Сommit
f93e457eb4
2 измененных файлов с 7 добавлено и 3 удалено
  1. 1 0
      README.md
  2. 6 3
      src/ExtensionManager.php

+ 1 - 0
README.md

@@ -31,6 +31,7 @@
 ## HOOKS
 
 1. **after_read_extension_config**: 在读取扩展配置后触发
+1. **after_read_extension_config_\<module_name>**: 在读取扩展配置后触发
 1. **before_install_extension**: 在安装扩展前触发
 1. **after_install_extension**: 在安装扩展后触发
 1. **before_uninstall_extension**: 在卸载扩展前触发

+ 6 - 3
src/ExtensionManager.php

@@ -13,6 +13,7 @@ use SixShop\System\Config\ExtensionConfig;
 use SixShop\System\Enum\ExtensionStatusEnum;
 use SixShop\System\Model\ExtensionConfigModel;
 use SixShop\System\Model\ExtensionModel;
+use think\Collection;
 use think\db\Query;
 use think\exception\ValidateException;
 use think\facade\Cache;
@@ -272,7 +273,7 @@ class ExtensionManager extends Service
         return $this->extensionList;
     }
 
-    public function getExtensionConfigForm(string $extensionID): array
+    public function getExtensionConfigForm(string $extensionID): Collection
     {
         $config = array_merge(ExtensionConfig::BASE, array_values($this->getExtension($extensionID)->getConfig()));
         $extensionConfig = ExtensionConfigModel::where('extension_id', $extensionID)->column(['value', 'type',], 'key', true);
@@ -298,9 +299,11 @@ class ExtensionManager extends Service
                 }
             }
         }
-        Event::trigger('after_read_extension_config', [$config, $extensionID]);
+        $configCollection = new Collection($config);
+        Event::trigger('after_read_extension_config', [$configCollection, $extensionID]);
+        Event::trigger('after_read_extension_config_'.$extensionID, [$configCollection]);
 
-        return $config;
+        return $configCollection;
     }
 
     public function migrations(string $id)