Symfony 2 - Wie übergibt man Daten an formBuilder?
Ich bin mit entity Auswahlliste in mein Formular. Ich will nur bestimmte Personen (im Beispiel: nur Gruppen, denen der Benutzer angehört)
Also, im controller, ich bin immer in diesen Gruppen, und versuchen, Sie zu übergeben in formBuider
.
Controller:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
so, was nun? wie Sie im formBuilder?
so ändern Sie diese Zeile mit übergeben, array mit Gruppen?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
oder in die andere Richtung:
class MessageType
{
/.../
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group','entity',
array(
'class' => 'Vendor\MyBundle\Entity\Group',
'property' => 'name',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('group');
$qb->add('where', 'group.administrator = :user');
$qb->setParameter('user', $user->getId());
return $qb;
},
'label' => 'Group'
)
)
//Continue adding fields
;
}
/.../
}
so wie ich das Objekt $user verwenden in der form builder? ($user repräsentieren den aktuellen angemeldeten user)
InformationsquelleAutor der Frage jacobmaster | 2011-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie geben das Objekt, das Sie verwenden möchten, in der __construct () - Methode.
ZB :
In Ihrer form-Typ :
Und dann in Ihre form geben buildForm Methode :
InformationsquelleAutor der Antwort Bacteries
InformationsquelleAutor der Antwort user3335780
Bacteries' Lösung IST NICHT gut. Zum Beispiel, wenn Sie erklären Ihre Art als service, ist es unmöglich, übergeben Sie ein Objekt an den Konstruktor.
Perfekte Lösung-Optionen - geben Sie einfach Daten wie die option zur Formular-generator.
InformationsquelleAutor der Antwort nick4fake
Wenn Sie möchten, verwenden Sie benutzerdefinierte Abfrage verwenden, müssen Sie die
query_builder
option wie folgt:Finden Sie weitere Infos über den Abfrage-generator in Lehre-Handbuch und über Optionen für die
entity
im Symfony2 Anleitung.InformationsquelleAutor der Antwort Ondrej Slinták
Bacteries' - Lösung ist eine richtig gute. Nur eine Notiz zu speichern Kopfschmerzen auf andere Kerl wie mich 🙂
In diesem Teil kann ich
use ($company)
Teil.Es war versteckt durch den Rahmen und natürlich nichts funktioniert so richtig ohne Sie.
InformationsquelleAutor der Antwort FGREZE
Beste Weg (meiner Meinung nach) geben, um Ihre form entityManager und wählen Sie alles, was Sie brauchen. Aber vergessen Sie nicht, zu erklären, leere Schlüssel in setDefaults() sonst die Daten nicht übergeben zu Ihrem generator.
So etwas wie dieses
EM gelten als einfache option...
InformationsquelleAutor der Antwort user1954544