Aufruf $ - generator->getData() innerhalb einer geschachtelten form immer NULL zurück
Ich versuche, Daten in einer verschachtelten form aber beim Aufruf $builder->getData()
ich bin immer NULL.
Wer weiß, was, wie sollte man die Daten in einer verschachtelten form?
Hier ist die ParentFormType.php:
class ParentFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('files', 'collection', array(
'type' => new FileType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false
);
}
}
FileType.php
class FileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
//Each one of bellow calls returns NULL
print_r($builder->getData());
print_r($builder->getForm()->getData());
die();
$builder->add('file', 'file', array(
'required' => false,
'file_path' => 'file',
'label' => 'Select a file to be uploaded',
'constraints' => array(
new File(array(
'maxSize' => '1024k',
))
))
);
}
public function setDefaultOptions( \Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver )
{
return $resolver->setDefaults( array() );
}
public function getName()
{
return 'FileType';
}
}
Dank!
- Welche Daten Sie zugreifen möchten?
- Die Child-Daten, in diesem Fall ist es eine ArrayCollection von File-Objekten. Auch würde ich liek, um zu bemerken, dass das eigentliche Problem ist, dass ich keinen Zugriff auf die Daten aus einem Formular-Feld Datei-Erweiterung die ich gemacht habe, die arbeiten gut für Eltern bildet, aber wie es in dem oben genannten Beispiel habe ich keinen Zugriff auf die geschachtelte form der Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die FormEvents::POST_SET_DATA um das Formular-Objekt :
Es ist ein (sehr ärgerlich..) bekanntes Problem:
https://github.com/symfony/symfony/issues/5694
Da es funktioniert gut für einfache form, aber nicht für zusammengesetzte form. Aus der Dokumentation (siehe http://symfony.com/doc/master/form/dynamic_form_modification.html), Sie tun müssen:
Form gebaut wird, bevor die Daten gebunden ist (das heißt, die gebundenen Daten nicht zur Verfügung an der Zeit, dass
AbstractType::buildForm()
genannt wird)Wenn Sie wollen, um dynamisch erstellen Sie Ihre form, basierend auf der bestimmten Daten, die Sie benötigen, um Ereignisse
http://symfony.com/doc/2.3/cookbook/form/dynamic_form_modification.html