Action looks like this:
/**
* @Operation(
* summary="Gets an agent for a given id.",
* @SWG\Parameter(
* name="id",
* in="query",
* description="Which agent to return.",
* required=false,
* type="string"
* ),
* @SWG\Response(
* response="200",
* description="Returned when successful.",
* @Model(type=AppBundle\Entity\Agent::class, groups={"agent.show"})
* ),
* @SWG\Response(
* response="404",
* description="Returned when the agent is not found."
* )
* )
*
* @Rest\Get("/agent")
* @Rest\QueryParam(name="id", requirements="\d+", description="Which agent to return.")
*/
Results in:
"User Notice: $ref "#/definitions/Agent" not found for @SWG\Schema() in \Nelmio\ApiDocBundle\SwaggerPhp\ModelRegister->__invoke() in /vagrant/api/vendor/nelmio/api-doc-bundle/SwaggerPhp/ModelRegister.php on line 74"
Any help appreciated
For some reason i am encountering the same issue.
I tried to install a fresh copy of symfony + jms serializer + nelmio api only to test and i also hit the same issue
Same here
Could you provide us the stack trace please? I think because we don't register the models in zircote-php, it raises a notice when it validates its output.
namespace AppBundle\Model;
use JMS\Serializer\Annotation as Serializer;
class Testing
{
/**
* @var
* @Serializer\Type("string")
*/
public $test;
}
On default controller
/**
* @SWG\Response(
* response="200",
* description="User successfully retrieved",
* @Model(type="AppBundle\Model\Testing")
* )
Symfony\Component\Debug\Exception\ContextErrorException:
User Notice: $ref "#/definitions/Testing" not found for @SWG\Schema() in \Nelmio\ApiDocBundle\SwaggerPhp\ModelRegister->__invoke() in D:\Work\tnelm\vendor\nelmio\api-doc-bundle\SwaggerPhp\ModelRegister.php on line 71
at vendor\zircote\swagger-php\src\Logger.php:38
at Swagger\Logger->Swagger\{closure}('$ref "#/definitions/Testing" not found for @SWG\\Schema() in \\Nelmio\\ApiDocBundle\\SwaggerPhp\\ModelRegister->__invoke() in D:\\Work\\tnelm\\vendor\\nelmio\\api-doc-bundle\\SwaggerPhp\\ModelRegister.php on line 71', 1024)
at call_user_func(object(Closure), '$ref "#/definitions/Testing" not found for @SWG\\Schema() in \\Nelmio\\ApiDocBundle\\SwaggerPhp\\ModelRegister->__invoke() in D:\\Work\\tnelm\\vendor\\nelmio\\api-doc-bundle\\SwaggerPhp\\ModelRegister.php on line 71', 1024)
(vendor\zircote\swagger-php\src\Logger.php:68)
at Swagger\Logger::notice('$ref "#/definitions/Testing" not found for @SWG\\Schema() in \\Nelmio\\ApiDocBundle\\SwaggerPhp\\ModelRegister->__invoke() in D:\\Work\\tnelm\\vendor\\nelmio\\api-doc-bundle\\SwaggerPhp\\ModelRegister.php on line 71')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:368)
at Swagger\Annotations\AbstractAnnotation->validate(array(object(Swagger), object(Path), object(Get), object(Response)), array(object(Swagger), object(Path), object(Get), object(Response)), 'responses/0/schema')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:443)
at Swagger\Annotations\AbstractAnnotation::_validate(object(Response), array(object(Swagger), object(Path), object(Get), object(Response)), array(object(Swagger), object(Path), object(Get), object(Response)), 'responses/0')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:413)
at Swagger\Annotations\AbstractAnnotation->validate(array(object(Swagger), object(Path), object(Get), object(Response)), array(object(Swagger), object(Path), object(Get)), 'responses/0')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:443)
at Swagger\Annotations\AbstractAnnotation::_validate(array(object(Response)), array(object(Swagger), object(Path), object(Get)), array(object(Swagger), object(Path), object(Get)), 'responses')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:449)
at Swagger\Annotations\AbstractAnnotation::_validate(object(Get), array(object(Swagger), object(Path), object(Get)), array(object(Swagger), object(Path), object(Get)), '')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:413)
at Swagger\Annotations\AbstractAnnotation->validate(array(object(Swagger), object(Path), object(Get)), array(object(Swagger), object(Path)))
(vendor\zircote\swagger-php\src\Annotations\Operation.php:158)
at Swagger\Annotations\Operation->validate(array(object(Swagger), object(Path)), array(object(Swagger), object(Path)), '#/paths/0/get')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:443)
at Swagger\Annotations\AbstractAnnotation::_validate(object(Path), array(object(Swagger), object(Path)), array(object(Swagger), object(Path)), '#/paths/0')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:413)
at Swagger\Annotations\AbstractAnnotation->validate(array(object(Swagger), object(Path)), array(object(Swagger)), '#/paths/0')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:443)
at Swagger\Annotations\AbstractAnnotation::_validate(array(object(Path)), array(object(Swagger)), array(object(Swagger)), '#/paths')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:449)
at Swagger\Annotations\AbstractAnnotation::_validate(object(Swagger), array(object(Swagger)), array(object(Swagger)), '#')
(vendor\zircote\swagger-php\src\Annotations\AbstractAnnotation.php:413)
at Swagger\Annotations\AbstractAnnotation->validate(array(object(Swagger)), array(), '#')
(vendor\zircote\swagger-php\src\Annotations\Swagger.php:150)
at Swagger\Annotations\Swagger->validate()
(vendor\zircote\swagger-php\src\Analysis.php:331)
at Swagger\Analysis->validate()
(vendor\nelmio\api-doc-bundle\Describer\SwaggerPhpDescriber.php:44)
at Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber->Nelmio\ApiDocBundle\Describer\{closure}()
at call_user_func(object(Closure))
(vendor\nelmio\api-doc-bundle\Describer\ExternalDocDescriber.php:40)
at Nelmio\ApiDocBundle\Describer\ExternalDocDescriber->getExternalDoc()
(vendor\nelmio\api-doc-bundle\Describer\ExternalDocDescriber.php:33)
at Nelmio\ApiDocBundle\Describer\ExternalDocDescriber->describe(object(Swagger))
(vendor\nelmio\api-doc-bundle\ApiDocGenerator.php:59)
at Nelmio\ApiDocBundle\ApiDocGenerator->generate()
(vendor\nelmio\api-doc-bundle\Controller\SwaggerUiController.php:31)
at Nelmio\ApiDocBundle\Controller\SwaggerUiController->__invoke(object(Request))
at call_user_func_array(object(SwaggerUiController), array(object(Request)))
(vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:153)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:68)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php:171)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(web\app_dev.php:30)
at require('D:\\Work\\tnelm\\web\\app_dev.php')
(vendor\symfony\symfony\src\Symfony\Bundle\WebServerBundle\Resources\router.php:42)
Same here
Any ideas how to fix it?
Same here, waiting for some solution for this - any updates ?
Well on my side i even tried to force model registry to describe the model when loading the SwaggerPhpDescriber, it didn't seem to work..
From what i know is the model describer's doesn't seem to be running at all. The moment SwaggerPHPDescriber runs the error is thrown.
Meanwhile i guess staying on 2.x is the best way to go.
Same here.
PR welcome, for me we just have to register a fake definition in swagger-php when detecting @Model.
Comment out line 44 in Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber
$analysis->validate();
This validation should not run in the Describer... at the point where this command runs it does not have the hole inforamtion!
@betzholz if we remove this we'll remove all errors notice from swagger-php (annotation misuses for instance). I'd rather fix the notice.
Erm. No idea why the build failed O o.
But anyway by changing
$annotation->merge([new $annotationClass([
'ref' => $this->modelRegistry->register(new Model($this->createType($model->type), $model->groups)),
])])
to
$annotation->merge([new Definition(["title" => "Fake"]), new $annotationClass([
ref' => $this->modelRegistry->register(new Model($this->createType($model->type), $model->groups)),
])])
Also add
use Swagger\Annotations\Definition;
Seems to work for me, well at least on my testing project.
Problem is caused by conflicts with newer version of zircote/swagger-php. To resolve the problem quickly, you should downgrade the version of zircote/swagger-php to version 2.0.9 by adding to your composer.json the following line:
"zircote/swagger-php": "2.0.9"
It seems that also "zircote/swagger-php": "2.0.10" works.
So just for a though should you "lock" your dependency versions ? OR at least run tests when some of those has been updated.
Hmm, I think that this is the breaking change https://github.com/zircote/swagger-php/commit/b7a0fb0989cc686f85191763cd3f0fbbb3a0f627
Tried #1073 and results are the same.
User Notice: $ref "#/definitions/User" not found for @SWG\Items() in \Nelmio\ApiDocBundle\SwaggerPhp\ModelRegister->__invoke() in /home/wunder/PhpstormProjects/symfony-flex-backend/vendor/nelmio/api-doc-bundle/SwaggerPhp/ModelRegister.php on line 74
@tarlepp are you sure you correctly tested #1073? Because line 74 is a line break...
@GuilhemN Damn, I though that fix was already merged to master...
Most helpful comment
Hmm, I think that this is the breaking change https://github.com/zircote/swagger-php/commit/b7a0fb0989cc686f85191763cd3f0fbbb3a0f627