2016-09-08 5 views
1

バージョン1からバージョン2に切り替えました。マップとしてマークされたQueryParamにデフォルト値として配列を与える方法が不思議でした。例えばFOSRestBundle - QueryParam - マップとデフォルト値

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

私はのparamを取得しよう:

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

結果は次のとおりです。私が正しく配列を受け取っFOSRestBundleの以前のバージョンでは

string 'user_opened_resource' (length=20) 

私の得た結果:

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

2. *バージョンで同じ結果を得ることは可能ですか?

+0

こんにちは、 'QueryParam'で' array = true'を試すことができますか? –

+0

@MertÖksüzこんにちは、バージョン2. * '' 'array = true'''が' '' map = true'''に置き換えられました。 –

答えて

2

ParamFetcherの変更がthis in 1.8からthis in 2.0に変更されているようです。最初のバージョン(1.8)では、param fetcherはparamsが配列かどうかをチェックし、必要に応じて結果を配列にキャストします。 2番目のバージョン(2.0)では、デフォルト値はResolverTrait::resolveValueに渡され、元の値のタイプとは何の関係もありません。すべて言われて、私はあなたが作業の新しい方法(2.0+)でこれを扱うような方法は、デフォルトではなく、文字列などの単一の値を持つ配列を使用するだろうと仮定します

...

/** 
* @QueryParam(
*  name="activity_filters", 
*  map=true, 
*  requirements="user_opened_resource", 
*  default={"user_opened_resource"} 
*) 
*/ 
関連する問題