FOSRestBundle - QueryParam - 映射和默认值

FOSRestBundle - QueryParam - map and default value

我从版本 1.* 切换到版本 2.* 并想知道如何将数组作为默认值提供给标记为地图的 QueryParam

例如:

/**
* @QueryParam(name="activity_filters", map=true, requirements="user_opened_resource", default="user_opened_resource")
*/

当我尝试获取参数时:

$activityFilters = $paramFetcher->get('activity_filters');
var_dump($activityFilters); die;

结果是:

string 'user_opened_resource' (length=20)

在以前版本的 FOSRestBundle 中,我正确地收到了一个数组作为我的 get:

array (size=1)
  0 => string 'user_opened_resource' (length=20)

是否可以在 2.* 版本中实现相同的结果?

您的问题似乎是 this in 1.8 to this in 2.0 中 ParamFetcher 的变化。在第一个版本 (1.8) 中,param fetcher 检查 params 是否为数组,然后在必要时将结果转换为数组。在第二个版本 (2.0) 中,默认值被传递给 ResolverTrait::resolveValue 而没有引用原始值类型应该是什么。

综上所述,我假设您使用新工作方式 (2.0+) 处理此问题的方式是使用具有单个值的数组作为默认值,而不是像...

/**
 * @QueryParam(
 *     name="activity_filters",
 *     map=true,
 *     requirements="user_opened_resource",
 *     default={"user_opened_resource"}
 * )
 */