Php laravel swagger不在应用程序目录外使用控制器

Php laravel swagger不在应用程序目录外使用控制器,php,laravel,swagger,Php,Laravel,Swagger,我有一个控制器ServiceBookingController,它位于laravel传统app目录之外。我正在做招摇过市的文件。它适用于App\Http\controllers目录中的控制器。这是我的控制器文件 <?php namespace Modules\Beauty\Http\Controllers\API;// here is the directory use App\Http\Controllers\Controller; use Illuminate\Http\Reques

我有一个控制器
ServiceBookingController
,它位于laravel传统
app
目录之外。我正在做招摇过市的文件。它适用于
App\Http\controllers
目录中的控制器。这是我的控制器文件

<?php
namespace Modules\Beauty\Http\Controllers\API;// here is the directory

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class ServiceBookingController extends Controller{
/**
     * @OA\Post(
     *     path="/beauty/list-customer-service-bookings",
     *     tags={"beauty_customer_bookings"},
     *     summary="List Customer Bookings.",
     *     operationId="Beauty_Customer_Bookings",
     *     @OA\Parameter(
     *         name="customer_id",
     *         in="query",
     *         description="customer id",
     *         required=true,
     *         @OA\Schema(
     *             type="integer",
     *             default="482"
     *         )
     *     ),
     *     @OA\Response(
     *         response=422,
     *         description="validation errors."
     *     ),
     *     @OA\Response(
     *          response="200",
     *          description="Customer Bookings."
     *     ),
     *     @OA\Response(
     *          response="401",
     *          description="auth failed."
     *     ),
     * )
     */
  public function list_customer_service_bookings(Request $request)
  {
    ...
  }

}


要自动加载
模块
命名空间,您需要编辑
composer.json
的自动加载部分,如下所示:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "Modules\\": "modules/"
    }
},
然后

运行以下命令

php artisan clear-compiled
composer dumpautoload
composer update

如果使用DarkanLine/l5 swagger,请运行以下命令:

php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
现在,您可以打开config/l5-swagger.php: 在注释中添加自定义目录。像这样:

'annotations' => [
                base_path('app'),   // This is default
                base_path('modules') // Add your directory
            ],

我希望它有用。

您是否已将此命名空间添加到
composer.json
?你为什么要把控制器移到别处去?@Jerodev我没有。已经完成了。您能告诉我在
composer.json
文件中在哪里添加名称空间吗?这里有一篇很好的文章,介绍了如何生成API文档,并提供了一个简单的解释,可能会对您有所帮助。你好,先生!谢谢你的回答。我现在正在尝试这个解决方案。我已经尝试了这个
“Modules\\”:“Modules/”
,但它仍然是一样的。最终的对象类似于
“psr-4”:{“illumb\\”:“src/illumb/”,“Modules\\”:“Modules/”}
“autoload”:{“files:[“src/illumb/Foundation/helpers.php”,“src/illumb/Support/helpers.php”],“psr-4”:{“illumb\\”:“src/illumb/”,“Modules\\”:“Modules/”}},
我对最后的
自动加载对象发表了评论。一切都好吗?