Symfony — NelmioApiDocBundle: Показать описание параметра, импортированное из класса

Я использую NelmioApiDocBundle вместе с фреймворком PHP Symfony3 для REST API.
Я хочу отобразить описание моих параметров на странице / api / doc.
Возможно ли это без добавления параметров вручную?
Я хочу импортировать его из класса ввода / вывода.

Вот как выглядит моя документация:

Скриншот

Вот мой @ApiDoc действия контроллера (/ api / user / login), который генерирует документацию:

 * @ApiDoc(
*     section = "user",
*     resource = true,
*     description = "Checks the user credentials and returns an authentication & refresh token if they are correct",
*     input = { "class" = "AppBundle\Libraries\Core\User\LoginRequest", "name" = "" },
*     output = { "class" = "AppBundle\Libraries\Core\User\LoginResponse", "name" = "" },
*      statusCodes = {
*          200 = "Returned when successful",
*          400 = "Returned when request syntax is incorrect",
*          404 = "Returned when the page is not found",
*          429 = "Returned when the client sent too many requests during a time period",
*          500 = "Returned when an internal server error occured",
*          501 = "Returned when an unavailable request method is user (GET, POST, DELETE, PUT, ...)",
*          503 = "Returned when the service is unavailable at the moment eg. due to maintenance or overload"*      },
*
* )

AppBundle \ Библиотеки \ Ядро \ User \ LoginRequest учебный класс:

class LoginRequest implements JsonSerializable
{
/**
* The username.
*
* @var string
*
* @Assert\NotBlank()
* @Assert\Type("string")
*/
public $username;

/**
* The password.
*
* @var string
*
* @Assert\NotBlank()
* @Assert\Type("string")
*/
public $password;

/**
* Defines whether or not to save the refresh token as cooke.
*
* @var bool
*
* @Assert\NotBlank()
* @Assert\Type("bool")
*/
public $rememberPassword;

public function getUsername()
{
return $this->username;
}

public function setUsername($username)
{
$this->username = $username;
}

public function getPassword()
{
return $this->password;
}

public function setPassword($password)
{
$this->password = $password;
}

public function getRememberPassword()
{
return $this->rememberPassword;
}

public function setRememberPassword($rememberPassword)
{
$this->rememberPassword = $rememberPassword;
}

public function jsonSerialize()
{
return [
'username' => $this->username,
'password' => $this->password,
'rememberPassword' => $this->rememberPassword
];
}
}

Я хотел бы использовать описания этого класса, например. для имени пользователя: «Имя пользователя.», для пароля: «Пароль». и для RememberPassword: «Определяет, сохранять ли токен обновления как cooke».

Спасибо за помощь.

Привет
Орландо

5

Решение

Есть только несколько мест, где NelmioApiDoc извлекает данные для последующего сгенерированного представления. Но одну вещь, которую вы можете сделать, это добавить свои описания к типу формы вашего класса сущности / модели.

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('rememberPassword', CheckboxType::class, array(
'label' => 'input.remember.password',
// description will be passed to table in ApiDoc view
'description' => 'Defines whether or not to save the refresh token as cookie',
));
}

Я знаю, что вы хотели узнать, есть ли способы автоматически добавлять больше информации в документацию, но их мало. Но если вы хотите добавить дополнительную информацию, вы можете сделать это с помощью комментариев, как в примере ниже.

/**
* Lorem ipsum dolor sit amet
*
* #### Example of expected response ####
*     [
*         {
*             "username": "Lorem ipsum dolor sit amet",
*             "password": "Lorem ipsum dolor sit amet",
*             "rememberPassword": {
*                 "1": "Lorem ipsum dolor sit amet",
*                 "2": "Lorem ipsum dolor sit amet",
*                 "3": "Lorem ipsum dolor sit amet"*             },
*         },
*         ...
*     ]
*
* @ApiDoc(
*     section = "user",
*     resource = true,
*     description = "Checks the user credentials and returns an authentication & refresh token if they are correct",
*     input = { "class" = "AppBundle\Libraries\Core\User\LoginRequest", "name" = "" },
*     output = { "class" = "AppBundle\Libraries\Core\User\LoginResponse", "name" = "" },
*      statusCodes = {
*          200 = "Returned when successful",
*          400 = "Returned when request syntax is incorrect",
*          404 = "Returned when the page is not found",
*          429 = "Returned when the client sent too many requests during a time period",
*          500 = "Returned when an internal server error occured",
*          501 = "Returned when an unavailable request method is user (GET, POST, DELETE, PUT, ...)",
*          503 = "Returned when the service is unavailable at the moment eg. due to maintenance or overload"*      },
*
* )
*
*/
public function getLoginRequestAction()
{
// your code
}
0

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

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

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