Jelajahi Sumber

feat(extension):优化扩展控制器和路由配置

- 更新路由规则以支持更灵活的文件路径匹配
- 为Vue文件访问添加详细的描述和名称选项- 移除不必要的中间件闭包符号
- 替换Helper调用为SixShop\Core命名空间下的函数
- 简化响应返回方式,使用success_response函数
- 使用extension_path函数来构建文件路径
runphp 5 bulan lalu
induk
melakukan
19b8dfc0cb
2 mengubah file dengan 10 tambahan dan 5 penghapusan
  1. 6 3
      route/admin.php
  2. 4 2
      src/Controller/ExtensionController.php

+ 6 - 3
route/admin.php

@@ -4,8 +4,12 @@ declare(strict_types=1);
 use SixShop\System\Controller\{ExtensionConfigController, ExtensionController};
 use SixShop\System\Controller\{ExtensionConfigController, ExtensionController};
 use think\facade\Route;
 use think\facade\Route;
 
 
-Route::get('extension/:extension/:file.vue', [ExtensionController::class, 'vue'])
+// Admin路由
+// 路由前缀: /admin/system
+Route::get('extension/:extension/:file\.vue', [ExtensionController::class, 'vue'])
+    ->pattern(['file' => '[\w\-\/]+'])
     ->option(['name' => 'system:extension:vue', 'description' => '获取扩展的Vue文件']);
     ->option(['name' => 'system:extension:vue', 'description' => '获取扩展的Vue文件']);
+
 Route::group('extension', function () {
 Route::group('extension', function () {
     Route::get('normal', [ExtensionController::class, 'normal'])->option(['name' => 'system:extension:normal', 'description' => '获取普通扩展列表']);
     Route::get('normal', [ExtensionController::class, 'normal'])->option(['name' => 'system:extension:normal', 'description' => '获取普通扩展列表']);
     Route::resource('', ExtensionController::class, function () {
     Route::resource('', ExtensionController::class, function () {
@@ -33,5 +37,4 @@ Route::resource('extension_config', ExtensionConfigController::class)->only([
     'description' => '扩展配置'
     'description' => '扩展配置'
 ])->middleware([
 ])->middleware([
     'auth'
     'auth'
-]);
-
+]);

+ 4 - 2
src/Controller/ExtensionController.php

@@ -10,6 +10,8 @@ use think\App;
 use think\facade\Event;
 use think\facade\Event;
 use think\paginator\driver\Bootstrap;
 use think\paginator\driver\Bootstrap;
 use think\Response;
 use think\Response;
+use function SixShop\Core\extension_path;
+use function SixShop\Core\success_response;
 
 
 class ExtensionController
 class ExtensionController
 {
 {
@@ -115,12 +117,12 @@ class ExtensionController
             }
             }
         }
         }
 
 
-        return Helper::success_response($options);
+        return success_response($options);
     }
     }
 
 
     public function vue(string $extension, string $file, ExtensionManager $extensionManager): Response
     public function vue(string $extension, string $file, ExtensionManager $extensionManager): Response
     {
     {
-        $filePath = Helper::extension_path($extension) . 'resource/admin/' . $file . '.vue';
+        $filePath = extension_path($extension) . 'resource/admin/' . $file . '.vue';
         if (file_exists($filePath)) {
         if (file_exists($filePath)) {
             return response(file_get_contents($filePath))
             return response(file_get_contents($filePath))
                 ->header(['Content-Type' => 'text/plain;charset=utf-8']);
                 ->header(['Content-Type' => 'text/plain;charset=utf-8']);