2016-06-23 8 views
0

symfony 2でフォームの単一ドロップダウンを作成する方法について、フィールド 'abbr1 'と' abbr2 'をテーブルParamsの1つのレコードから削除します。symfony 2の1つのテーブル内の2つの異なるエンティティから選択リスト(ドロップダウン)を追加します

私はテーブルParamsに1つのレコードがあると言います。

ID:1

タイトル:サンプル

abbr1:qw12

abbr2:ER34

今私は、単一のドロップダウンの値としてabbr1とabbr2を選択します。私はフォームを作成しましたが、どちらも選択肢にする方法はわかりません。私は一度に1つのプロパティとしてそれらを選択することができます。ここに私のコードです:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add(
      'desiredAbbr', 
      'entity', 
      array(
       'class' => 'FooBarBundle:Params', 
       'property' => 'abbr1', 
       //'property' => 'abbr2', 
       ) 
      ) 
     ->add('save','submit',array('label'=>'Submit')) 
    ; 
} 

すべての提案は大歓迎です。どうもありがとう。

更新: 期待ドロップダウン値は、HTML形式で次のようになります。

{% for par in parameters %} 
    <select> 
     <option>{{param.abbr1}}</option> {# qw12 #} 
     <option>{{param.abbr2}}</option> {# er34 #} 
    </select> 
{% endfor %} 
+0

HTML選択入力には1つの値属性しかありません。それで、あなたは1つのプロパティだけを提供することができます.Buあなたは新しいものであなたの2つのプロパティを連結し、あなたのフォームでこの新しいものを使用することができます。 – Alsatian

+0

@Alsatian私は私の場合は連結が必要ないと思う。フィードバックをお寄せいただきありがとうございます。私も上記の私のコードを明確にするために更新しました。 –

答えて

1

[OK]を、私はしませんラベルとして、あなたが値としてそれらを望んでいることを逃しました。そして、あなたは変更する必要があり、あなたは、フォーム

$params = $this->getDoctrine()->getRepository('AppBundle:Params')->findAll(); 
$choices = array(); 
foreach ($params as $p) { 
    // key will be used as option value, value as option title 
    $choices[$p->getAbbr1()] = $p->getAbbr1(); 
    $choices[$p->getAbbr2()] = $p->getAbbr2(); 
} 

$form = $this->createForm(myform::class, array(), array('abbrChoices' => $choices)); 

を作成し、コントローラには、この

$choices = $options['abbrChoices']; 

$builder->add('desiredAbbr', ChoiceType::class, array(
    'choices' => $choices, 
)); 

// in configureOptions method 
$resolver->setDefaults(array(
    'abbrChoices' => array(), 
)); 

ように形成BUT。どのようにこの選択肢を使用するつもりですか?

+0

彼はラベルとしてではなく価値として望んでいます。 – Alsatian

+0

@Alsatianええ、私はそれを逃した。私の答えを編集しました –

+0

@DenisAlimovフィードバックのおかげで。私は明確化のために私のコードを更新しました。もう一度それを確認してください。 –

関連する問題