использование внешних определений в Swagger / Zircote / Nelmio-api-doc

Я использую следующие версии:

zircote/swagger-php in version 2.0.10
nelmio/api-doc-bundle in version v3.0.0-BETA4

Мой контроллер с одним действием

    /**
* @Operation(
*     tags={"DeliverySlip"},
*     summary="Send information after deliveryItems are processed and deliverySlip was scanned",
*     @SWG\Response(
*         response="200",
*         description="Returned when successful"*     ),
*     @SWG\Response(
*         response="400",
*         description="Returned on a missing request parameter"*     ),
*     @SWG\Response(
*         response="500",
*         description="Returned on any other error"*     ),
*     @SWG\Parameter(
*        name="slipIdentifier",
*        description="identifier of delivery slip",
*        type="string",
*        format="string",
*        in="path"*     ),
*     @SWG\Parameter(
*        name="JSON update body",
*        in="body",
*        description="json login request object",
*        required=true,
*        @SWG\Schema(ref="#/definitions/product")
*     )
* )
*
* @Put("/deliveryslip/update/{slipIdentifier}", requirements={"slipIdentifier" = "\w+"})
*
* @param string $slipIdentifier
* @param Request $request
* @return JsonResponse
*/
public function updateDeliverySlipAction($slipIdentifier, Request $request)

Это модель / определение, которое я хочу использовать в своем действии контроллера:

<?php

namespace Sendis\Presentation\RestBundle\Model;

use Swagger\Annotations as SWG;

/**
* @SWG\Definition(
*     definition="product",
*     type="object",
*     required={"name"}
* )
*/
class Product
{
/**
* @SWG\Property(example="doggie")
* @var string
*/
public $name;
}

Но когда я захожу на страницу документации в / api / doc, я вижу эту ошибку:

Errors
Resolver error at paths./api/deliveryslip/update/{slipIdentifier}.put.parameters.1.schema.$ref
Could not resolve reference: #/definitions/product

Следующее, что я узнал:
мой product.php не читается swagger совсем. Я могу написать все, что я хочу здесь. Никаких ошибок, даже если я что-то напишу. Это приводит меня к выводу, что мой product.php не был найден swagger совсем.

Я полезен для каждого намека.

С уважением,
Максимум

1

Решение

Я нашел решение этой проблемы. Мне нужно было загрузить внешнее определение с его полным пространством имен следующим образом:

/**
* @SWG\Put(
*     path="/deliveryslip/update/{slipIdentifier}",
*     tags={"DeliverySlip"},
*     summary="Send information after deliveryItems are processed and deliverySlip was scanned",
*     @SWG\Definition(
*        definition="product",
*        type="object",
*        required={"name"}
*     ),
*     @SWG\Response(
*         response="200",
*         description="Returned when successful"*     ),
*     @SWG\Response(
*         response="400",
*         description="Returned on a missing request parameter"*     ),
*     @SWG\Response(
*         response="500",
*         description="Returned on any other error"*     ),
*     @SWG\Parameter(
*        name="slipIdentifier",
*        description="identifier of delivery slip",
*        type="string",
*        format="string",
*        in="path"*     ),
*     @SWG\Parameter(
*        name="JSON update body",
*        in="body",
*        description="json login request object",
*        required=true,
*        @SWG\Schema(
*         type="array",
*         @Model(type=Sendis\Presentation\RestBundle\Model\Product::class)
*     )
*     )
* )
*
* @param string $slipIdentifier
* @param Request $request
* @return JsonResponse
*/
public function updateDeliverySlipAction($slipIdentifier, Request $request)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]