Symfony2 でフォーム クラスを作成しています。私のクラスでは、選択フィールドがあります。選択した配列を返す関数を作成しました。
public function getCardTypes() {
return array('visa' => 'Visa', 'mc' => 'MasterCard', 'amex' => 'American Express');
}
後で、この配列を使用して選択フィールドをフォームに追加します。
$builder->add('PaymentCCType', 'choice', array('choices' => $this->getCardTypes()));
そして getDefaultOptions 関数には、このフィールドの選択制約があります。
'PaymentCCType' => new Choice(array('choices' => $this->getCardTypes())),
このバリデーターに問題があるようです。このフォームを送信すると、選択ボックスの下に次のエラーが表示されます:「選択した値は有効な選択ではありません」。もちろん、配列内の選択肢の 1 つを使用しています。
私は何を間違っていますか?
/* 編集 */
私がこのように持っている4つのフィールドのうち、3つだけでエラーが発生することに気付きました。選択が月 (単純な 1-12) の場合、検証は機能します。
/* 編集 2 */
この問題は、配列キーが値と一致しない場合に発生するようです。アレイをに切り替えたところ、array('Visa' => 'Visa', 'MasterCard' => 'MasterCard', 'American Express' => 'American Express')
動作するようになりました。これを回避する方法はありますか?この問題を抱えているのは私だけではないように感じます。次のような通常の(非連想)配列がある場合でも発生しますarray('Visa', 'MasterCard', 'American Express')