具有空值的 Symfony QueryParam

Symfony QueryParam with empty value

我正在尝试在我的 symfony 控制器上使用 QueryParam。

我不想在查询中接受空参数的问题。但是当我用

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

并且我尝试使用 mysite.com/test= 调用网络服务,它仍然有效。

我必须做些什么来拒绝请求中的空参数而不在代码中测试参数是否为空

谢谢

当测试非常奇怪时,验证似乎无法仅在 true 上使用配置 param_fetcher_listener,但是当我使用 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

的含义