2016-04-21 14 views
0

Ich habe Symfony ein wenig verwendet und ich versuche, einen Weg zu finden, ein Formular zu erstellen. Ich brauche eine MVC-basierte Lösung.Symfony2 - Erstellen eines Formulars, das verschiedene Entitäten verwendet

Mein Formular muss mehrere Informationen von verschiedenen Entitäten fragen und dann muss ich diese Informationen verarbeiten, die es in der Datenbank extrahieren. Die Datenbank wird kein Problem sein.

Ich habe gerade herausgefunden, wie mache ich ein Formular mit verschiedenen Arten von Entitäten?

Und wie mache ich ein Scrolldown-Menü mit den Daten in der Datenbank für eine Entität?

+2

http://symfony.com/doc/current/reference/forms/types/entity.html können Sie den Verein als ein Feld des Formulars, das Hinzufügen Auswahl bilden Sie eine selec bekommen t Element, das Optionen mit einer Eigenschaft (Ihrer Wahl) der verbundenen Entität als Wert enthält. – chalasr

Antwort

0

Wenn der Kommentar von @chalasr nicht zutrifft, d. H., Die Entitäten sind nicht verwandt, ist es möglich, etwas wie folgt in einem Controller zu tun. Erstellen Sie einfach in eine $ form Variable für jede Entity {x} Typ Form wie:

$formA = $this->createForm(AppBundle\Entity\EntityAType($entityA)); 
$formB = $this->createForm(AppBundle\Entity\EntityBType($entityB)); 
... 

return array(
    'formA' => $formA->createView(), 
    'formB' => $formB->createView(), 
    ... 
); 
0

Sie einfach die Formen kombinieren können, während jeder wie so getrennt zu halten

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class ReallyBigFormType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('foo', FooType::class, [ 
       // label, required, ... as well as options of FooType 
      ]) 
      ->add('bar', BarType::class, [ 
       // label, required, ... as well as options of BarType 
      ]) 
     ; 

    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([]); 
    } 

} 

und definieren FooType und BarType wie ein geordneter Form

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 
use Symfony\Component\Form\Extension\Core\Type\TextType 

class FooType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', TextType::class, [ 
       'label' => 'foo.name', 
      ]) 
     ; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => 'AppBundle\Entity\Foo', 
     ]); 
    } 

} 
Verwandte Themen