Symfony QueryParam с пустым значением

Я пытаюсь использовать QueryParam на моем контроллере Symfony.

Проблема в том, что я не хочу принимать пустые параметры в запросе. Но когда я определяю QueryParam с

@REST\QueryParam(name="test" , description="The test", requirements="\w+", strict=true, nullable=false)

и я пытаюсь позвонить в веб-сервис с mysite.com/test= это все еще работает.

Что мне нужно сделать, чтобы отказаться от пустого параметра в запросе без тестирования в коде, если параметр пуст или нет

Спасибо

1 ответ

Решение

При тестировании, как ни странно, проверка не работала с конфигурацией param_fetcher_listener просто на true, но когда я использовал forceвдруг все заработало

# config.yml
fos_rest:
    param_fetcher_listener: force

И в контроллере:

/**
 * @QueryParam(name="test" , description="The test", requirements="[a-zA-Z]+", strict=true, nullable=false, allowBlank=false)
 */
public function indexAction($test)
{
    // replace this example code with whatever you need
    return new JsonResponse($test);
}

Обратите внимание, что в моем примере есть несколько проверок и только ?test=a буду работать. нет test, ?test= а также ?test=1 все не будет работать по указанным причинам.

Если кто-нибудь знает, как заставить его работать с param_fetcher_listener: true Мне любопытно:)

Также ознакомьтесь с документацией ( https://symfony.com/doc/master/bundles/FOSRestBundle/param_fetcher_listener.html) для ознакомления с последствиями использования force

Другие вопросы по тегам