2016-09-01 3 views
1

、我々はこれら二つの鍵と一緒に遊ん・デ・ディスプレイ・リスト、ラジオボタンやチェックボックスを決めることができるのSymfony framworkの選択肢タイプを使用して、ブール値と選択肢のsymfonyのタイプ

'multiple' => false, 
'expanded' => true, //example for radio buttons 

だが、その代わりに、文字列の値に言ってみましょう「選択肢」キーで配列として与えられたさまざまな選択肢はブール値です:全く問題とはありませんdiffernetの選択肢を表示するには、リスト(選択)を使用して

$builder->add('myproperty', 'choice', array(
    'choices' => array(
     'Yes' => true, 
     'No' => false 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

形式は、リストで正しい選択を表示しているときが選択される。

ラジオボタンでリストを置き換える前に私が話した2つのキー(複数と拡張)を追加すると、選択したボタンがフィールドに表示されません。

誰かがなぜ知っていますか?

どのように簡単に動作させるには?

あなたは

注意をありがとう:実際に私はそれが、その後のいずれかで動作していないだろうと思っ値はブール値であり、最終的には、文字列になっていますが、リストの作品として、私はそれが動作しない理由を不思議に思うようその他。

+0

私は 'empty_value'はラジオボタンでは動作しないと思います。代わりに、 'data'オプションで値を強制することができます。 'array( 'required' => true、 'data' => false、 'choices_as_values' => true)' – VaN

+0

値がブール値でない場合、empty_valueはラジオボタンで機能します。私は、エンティティのためのトランスフォーマを作成する解決策について考えていますが、フレームワークを通して簡単な方法はありません – mlwacosmos

答えて

4

私は誰かを助けることを望んで私の答えを与えるでしょう。


データトランスフォーマを追加します。

$builder->add('myproperty', 'choice', array(
    'choices' => [ 
     'Yes' => '1', 
     'No' => '0' 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

$builder->get('myProperty') 
    ->addModelTransformer(new CallbackTransformer(
     function ($property) { 
      return (string) $property; 
     }, 
     function ($property) { 
      return (bool) $property; 
     } 
)); 

これは魔法です:右のラジオボタンがチェックされ、エンティティに正しい値が設定されました。

関連する問題