2016-06-03 8 views
0

In meiner Symfony Form habe ich ein choiceType Feld, das Kategorien auflistet. Meine Kategorie Tabelle sieht wie folgt aus:Kombinieren Sie Spalten in der Auswahlliste Symfony Form

id code categorie 
1 100 First categorie 
2 200 Second categorie 
3 210 Second subcategorie 

In meiner Form habe ich eine SELECT und mit ‚choice_label‘ ich entscheiden können, welche Spalte, entweder ‚Code‘ oder ‚Kategorie‘ für die Auswahlliste zu verwenden. Ich möchte beide verwenden, damit der Benutzer eine Auswahlliste zeigt, hat:

  • 100 Erste Kategorie
  • 200 Zweite Kategorie
  • .. etc

Ist es möglich, die zwei Spalten für beitreten das Choice_label; Verketten Sie die 2 Spalten in einer Zeichenfolge nur für den Zweck der Auswahloptionen anzuzeigen? Ich habe versucht, es hier und anderswo zu finden. Die offizielle docs erwähnen diese Option nicht.

Antwort

3

Auch in Choice für choice_label können Sie aufrufbar verwenden es zu setzen link

'choice_label' => function($category, $key, $index) { 
    /** @var Category $category */ 
    return $category->getId() . ' ' . $category->getName(); 
}, 

Aber warum verwenden Sie für Choice Sie Kategorien, wie gehen Sie Entscheidungen zu setzen? Warum Sie EntityType? nicht verwenden

->add('category', EntityType::class, array(
    'choice_label' => function ($category) { 
     return $category->getId() . ' ' . $category->getName(); 
    } 
    'class' => 'AppBundle:Category', 
    'query_builder' => function (EntityRepository $er) { 
     return $er->createQueryBuilder('c') 
      ->orderBy('c.id', 'ASC'); 
    }, 
)) 
+0

Genau das, was ich suchte, danke! Übrigens: Ich habe EntityType für dieses Auswahlfeld verwendet, aber ich habe es in meiner Frage nicht gesagt, ich denke, ich war zu sehr auf den Auswahlaspekt konzentriert. Die Funktion zum Verbinden der 2 Spalten funktioniert super. – zef