2017-03-21 11 views
0

データベーステーブルから読み込まれた選択フィールドを取得しようとしています。これは、プライマリキー列とtypeという名前の別の列を持つ単なるテーブルです。Symfony 2.8フォームEntityTypeが単一の値を返します

$builder 
     ->add('account_type', EntityType::class, array(
      'class' => 'AppBundle:AppAccountTypes', 
      'choice_label' => 'type' 
     )); 

私の選択ドロップダウンが単純に最初のエントリを3回繰り返して:私は、フォームを作成する場合

id type 
1  Sample 1 
2  Sample 2 
3  Sample 3 

ちょうどテストのために、たとえばテーブルが構成されています。テスト便宜上

<select id="add_account_form_account_type" name="add_account_form[account_type]" class="form-control"> 
<option value="1">Sample 1</option> 
<option value="1">Sample 1</option> 
<option value="1">Sample 1</option> 
</select> 

、コントローラは、単に使用している:

$account = new Account(); 

$form = $this->createForm(new AddAccountForm(), $account); 

return $this->render('account/new.html.twig', array(
    'page_title' => 'Create Account', 
    'form' => $form->createView() 
)); 

小枝テンプレート:

{% extends 'base.html.twig' %} 

{% block body %} 
    <h1>{{ page_title }}</h1> 
    {{ form_start(form) }} 
    {{ form_widget(form) }} 
    {{ form_end(form) }} 
{% endblock %} 

を、私はここで何をしないのですか? 、私はあなたのコードに見るように名前がaccount_typeあるフィールドがないので

$builder 
    ->add('account_type', EntityType::class, array(
     'class' => 'AppBundle:AppAccountTypes(Your Entity Class)', 
     'mapped' => false, 
     'choice_label' => 'type' 
    )); 

これが問題であるかもしれませ:

+0

あなたのコントローラや小枝が好きなものを見ていますか? – ccKep

+0

更新され、テストのためだけにすべてが簡素化されました。私は本当に明白な何かを見逃していると確信していますが、私はそれを見ることができません。 – Jestep

+0

私が見ることのできるものからうまく見えます...おそらくエンティティとリポジトリを投稿しようとしています - それは何かが明らかであることは疑いがありますが、 – ccKep

答えて

3

は、コードの下に使用する必要があるかもしれませ。

以下のようにあなたのコントローラを変更

$form = $this->createForm(AddAccountForm::class (Your form class), $account); 
関連する問題