Я работаю над Symfony 3.4 API.Я хочу создать документацию для API, используя nelmioApiDocBundle v3.2 , но я сталкиваюсь с некоторыми препятствиями.Для сериализации и нормализации я использую сериализатор Symfony, но я не могу заставить nelmioApiDocBundle использовать нормализаторы и преобразователь имен, сконфигурированные для сериализатора Symfony при использовании аннотации @ SWG \ Model .
В частности, я использую serializer.name_converter.camel_case_to_snake_case и DateTimeNormalizer
Я также использую FosRestBundle v2.0
Вотмоя конфигурация:
//config.yml
framework:
serializer:
name_converter: 'serializer.name_converter.camel_case_to_snake_case'
nelmio_api_doc:
areas:
path_patterns:
- ^/api(?!/doc$)
documentation:
host: example.com.ar
schemes: [https]
info:
title: MyApp
description: ...
version: 1.0.0
securityDefinitions:
Bearer:
type: apiKey
description: 'Value: Bearer {jwt}'
name: Authorization
in: header
security:
- Bearer: []
fos_rest:
body_listener:
enabled: true
array_normalizer: fos_rest.normalizer.camel_keys
Контроллер:
// UserController
/**
* Create new user
*
* @Post("/user/new")
*
* @SWG\Parameter(
* name="user",
* in="body",
* @SWG\Schema(type="object",
* @SWG\Property(property="user", ref=@Model(type=UserType::class))
* )
* )
* @SWG\Response(
* description="Creates a new User",
* response=201,
* @SWG\Header(
* header="Location",
* description="The location of the newly created object",
* type="string"
* )
* )
* @SWG\Tag(name="users")
* @ApiDocSecurity(name="Bearer")
*
*/
public function postUserAction(Request $request)
И formType:
class UserType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nombre')
->add('apellido')
->add('tipoDeDocumento')
->add('nroDeDocumento')
->add('fechaDeNacimiento', DateType::class, array(
'widget' => 'single_text',
'documentation' => [
'type' => 'string',
'example' => '2018-02-22T13:23:08-03:00',
],
))
->add('direccion')
->add('email')
->add('telefono')
->add('password')
;
}
Обратите внимание, что я добавил опцию «документация» в классе формыдля свойства date, но я хочу, чтобы он обрабатывался нормализатором.
Вот вывод в Swagger.ui
Заранее спасибо.