2016-09-08 3 views
1

Я переключился с версии 1. * на версию 2. * и задался вопросом, как можно получить массив в качестве значения по умолчанию для QueryParam, помеченного как карта.FOSRestBundle - QueryParam - map и значение по умолчанию

, например:

/** 
* @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 я правильно получил массив в результате моего получения:

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

Возможно ли достичь такого же результата в версиях 2. *?

+0

привет, вы можете попробовать 'array = true' в' QueryParam'? –

+0

@ MertÖksüz hi, так как версии 2. * '' 'array = true''' заменен на' '' map = true''' –

ответ

2

Похоже, что ваша проблема связана с изменениями в ParamFetcher от this in 1.8 до this in 2.0. В первой версии (1.8) параметр fetcher проверяет, являются ли params массивом, а затем при необходимости возвращает результат в массив. Во второй версии (2.0) значение по умолчанию передается в ResolverTrait::resolveValue без ссылки на то, каким должен был быть исходный тип значения.

Что бы вы сказали, я бы предположил, что вы с этим справитесь с новым способом работы (2.0+), будет использовать массив с одним значением в качестве значения по умолчанию, а не как строку, например ...

/** 
* @QueryParam(
*  name="activity_filters", 
*  map=true, 
*  requirements="user_opened_resource", 
*  default={"user_opened_resource"} 
*) 
*/ 
Смежные вопросы