Sfoglia il codice sorgente

fix: 修复新系统安装的时候数据库不存在报错

runphp 6 mesi fa
parent
commit
2c93c277c9
2 ha cambiato i file con 13 aggiunte e 3 eliminazioni
  1. 13 1
      src/Extension.php
  2. 0 2
      src/Hook/ExtensionStatusHook.php

+ 13 - 1
src/Extension.php

@@ -9,6 +9,8 @@ use SixShop\System\Cron\SystemCron;
 use SixShop\System\Enum\ExtensionStatusEnum;
 use SixShop\System\Hook\ExtensionStatusHook;
 use SixShop\System\Hook\GatheringCrontabEventHook;
+use think\db\exception\PDOException;
+
 use function SixShop\Core\extension_name_list;
 
 class Extension extends ExtensionAbstract
@@ -49,7 +51,12 @@ class Extension extends ExtensionAbstract
             }
             $className::macro('available', function () {
                 $extensionID = $this->getInfo()['id'];
-                $info = app()->make(ExtensionManager::class)->getInfo($extensionID);
+                try {
+                    $info = app()->make(ExtensionManager::class)->getInfo($extensionID);
+                } catch (PDOException) {
+                    // 新装系统的时候system扩展还未安装
+                    return false;
+                }
                 return $info->status === ExtensionStatusEnum::ENABLED;
             });
 
@@ -57,6 +64,11 @@ class Extension extends ExtensionAbstract
         parent::boot();
     }
 
+    public  function available()
+    {
+        return true;
+    }
+
     protected function getBaseDir(): string
     {
         return dirname(__DIR__);

+ 0 - 2
src/Hook/ExtensionStatusHook.php

@@ -21,8 +21,6 @@ class ExtensionStatusHook
     public function addMiddleware(BeforeRegisterRouteEvent $event)
     {
         $event->addMiddleware(Closure::fromCallable([$this, 'handle']));
-
-
     }
 
     public function handle(Request $request, Closure $next, $moduleName)