Я использую FOSRestBundle и задавался вопросом, можно ли проверять на пустые параметры запроса с помощью аннотаций?
Например, при вызове: /comments/1
создается исключение, поскольку параметры запроса dealId
и source
не установлены.
Однако вызов /comments/1?dealId=1&source=
хорош, даже если значение source
не установлено ben и не соответствует регулярному выражению, указанному в аннотации.
Функция контроллера:
/**
* Get a single comment.
*
* @Annotations\QueryParam(name="dealId", requirements="\d+", strict=true, description="The deal the comments belong to.")
* @Annotations\QueryParam(name="source", requirements="(forum|blog)", strict=true, description="The source of the comments.")
*
* @Annotations\View()
*
* @Annotations\Get("/comments/{id}", requirements={"id" = "\d+"})
*
*/
public function getCommentAction(Request $request, ParamFetcherInterface $paramFetcher, $id)
{
$dealId = $paramFetcher->get('dealId');
$source = $paramFetcher->get('source');
// TODO: Implement
return [ 'id' => $id, 'dealId' => $dealId, 'source' => $source ];
}
Обновление
Я поднял эту проблему в репозитории FOSRestBundle GitHub, и похоже, что то, что я прошу, в настоящее время невозможен из-за ограничений используемого валидатора Regex.
https://github.com/FriendsOfSymfony/FOSRestBundle/issues/814#issuecomment-49696288