FOSRestBundle - QueryParam - map和默认值



我从版本1切换过来。*到版本2。并且想知道如何将一个数组作为标记为map的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中获得相同的结果?*版本?

看起来你的问题是ParamFetcher从1.8到2.0的变化。在第一个版本(1.8)中,参数获取器检查参数是否为数组,然后在必要时将结果强制转换为数组。在第二个版本(2.0)中,默认值被传递给ResolverTrait::resolveValue,而没有引用原始值类型。

说了这么多,我假设你用新的工作方式(2.0+)来处理这个问题的方式是使用一个默认值为单个值的数组,而不是像…

这样的字符串。
/**
 * @QueryParam(
 *     name="activity_filters",
 *     map=true,
 *     requirements="user_opened_resource",
 *     default={"user_opened_resource"}
 * )
 */

最新更新