2017-03-21 4 views
0

Nur versuchen, ein Auswahlfeld aus einer Datenbanktabelle zu erhalten. Dies ist nur eine einfache Tabelle mit einer Primärschlüsselspalte und einer anderen Spalte mit dem Namen type.Symfony 2.8 Form EntityType liefert Einzelwert

nur zum Testen, besteht das Beispiel Tabelle:

id type 
1  Sample 1 
2  Sample 2 
3  Sample 3 

Wenn ich ein Formular erstellen:

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

Meine wählen Dropdown einfach wiederholt den ersten Eintrag 3 mal.

<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> 

Zum Testen halber wird die Steuerung nur mit:

$account = new Account(); 

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

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

Zweig Vorlage:

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

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

Was soll ich hier fehlt?

+0

Was ist Ihr Controller und Zweig aussehen? – ccKep

+0

Aktualisiert, vereinfacht alles nur zum Testen des Willens. Ich bin mir sicher, dass ich etwas wirklich Offensichtliches vermisse, aber ich kann es nicht sehen. – Jestep

+0

Sieht gut aus, was ich sehen kann ... Wahrscheinlich versuchen Sie auch, die Entität und das Repository zu posten - obwohl ich bezweifle, dass es etwas Offensichtliches ist – ccKep

Antwort

3

Mai werden Sie unter Code verwenden müssen:

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

Weil, wie ich in Ihrem Code sehen, dass es kein Feld ist, der Name account_type wird, kann dies das Problem ist.

dem Controller ändern, wie unten:

$form = $this->createForm(AddAccountForm::class (Your form class), $account);