Other Bundle Annotations ------------------------ * [PHPDoc](#phpdoc) * [JMS Serializer Features](#jms-serializer-features) - [Group Exclusion Strategy](#group-exclusion-strategy) - [Versioning Objects](#versioning-objects) * [Form Types Features](#form-types-features) * [Using Your Own Annotations](#using-your-own-annotations) --- This bundle will get information from the following other annotations: * `@FOS\RestBundle\Controller\Annotations\RequestParam` - use as `parameters` * `@FOS\RestBundle\Controller\Annotations\QueryParam` - use as `requirements` (when strict parameter is true), `filters` (when strict is false) * `@JMS\SecurityExtraBundle\Annotation\Secure` - set `authentication` to true, `authenticationRoles` to the given roles * `@Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache` - set `cache` ### PHPDoc Actions marked as `@deprecated` will be marked as such in the interface. ### JMS Serializer Features The bundle has support for some of the JMS Serializer features and uses this extra piece of information in the generated documentation. #### Group Exclusion Strategy If your classes use [JMS Group Exclusion Strategy](http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies#creating-different-views-of-your-objects), you can specify which groups to use when generating the documentation by using this syntax : ```php input={ "class"="Acme\Bundle\Entity\User", "groups"={"update", "public"} } ``` In this case the groups 'update' and 'public' are used. This feature also works for the `output` property. #### Versioning Objects If your `output` classes use [versioning capabilities of JMS Serializer](http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies#versioning-objects), the versioning information will be automatically used when generating the documentation. ### Form Types Features Even if you use `FormFactoryInterface::createNamed('', 'your_form_type')` the documentation will generate the form type name as the prefix for inputs (`your_form_type[param]` ... instead of just `param`). You can specify which prefix to use with the `name` key in the `input` section: ```php input = { "class" = "your_form_type", "name" = "" } ``` You can also add some options to pass to the form. You just have to use the `options` key: ```php input = { "class" = "your_form_type", "options" = {"method" = "PUT"}, } ``` ### Using Your Own Annotations If you have developed your own project-related annotations, and you want to parse them to populate the `ApiDoc`, you can provide custom handlers as services. You just have to implement the `Nelmio\ApiDocBundle\Extractor\HandlerInterface` and tag it as `nelmio_api_doc.extractor.handler`: ```yaml # app/config/config.yml services: mybundle.api_doc.extractor.my_annotation_handler: class: MyBundle\AnnotationHandler\MyAnnotationHandler tags: - { name: nelmio_api_doc.extractor.handler } ``` Look at the built-in [Handlers](https://github.com/nelmio/NelmioApiDocBundle/tree/master/Extractor/Handler). --- [back to index](index.md)