Symfony - validate empty query parameter values

fosrestbundle, php, query-string, symfony

Solution

If you want to force your parameters to be checked, you can change config file as explained in the documentation, Here is the sample:

`fos_rest: param_fetcher_listener: force `

Then you can set other options like strict, nullable accordingly.

See more details here :

http://symfony.com/doc/current/bundles/FOSRestBundle/configuration-reference.html (archive.org) https://symfony.com/doc/3.x/bundles/FOSRestBundle/index.html#config-reference https://symfony.com/doc/3.x/bundles/FOSRestBundle/annotations-reference.html

Problem

I am using the FOSRestBundle and was wondering is it possible to validate against empty query parameters using annotations? For example when calling: `/comments/1` an exception is thrown since both `dealId` and `source` query parameters haven't been set. However calling `/comments/1?dealId=1&source=` is fine even though the `source` value hasn't ben set and doesn't match the regex outlined in the annotation. Controller function: ``` /** * 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 ]; } ``` Update I raised this issue on the FOSRestBundle's GitHub repo too and it looks as if what I am asking for is currently not possible due to the limitations of the Regex validator that is being used. https://github.com/FriendsOfSymfony/FOSRestBundle/issues/814#issuecomment-49696288

Original source