Я использую следующие версии:
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
совсем.
Я полезен для каждого намека.
С уважением,
Максимум
Я нашел решение этой проблемы. Мне нужно было загрузить внешнее определение с его полным пространством имен следующим образом:
/**
* @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)
Других решений пока нет …