Formularerfassungsfehler
Ich versuche, einen Formulartyp zu verwenden und ihn so oft anzuzeigen, bis der Benutzer einen Patch auf einmal hochgeladen hat. Sagen wir 30 hochzuladende Dateien, 30 Formulare auf der Seite. Ich erhalte diesen Fehler:
Es wird erwartet, dass die Anzeigedaten des Formulars vom Typ Skalar, Array oder eine Instanz von \ ArrayAccess sind, es sich jedoch um eine Instanz der Klasse MS \ CoreBundle \ Entity \ Photo handelt. Sie können diesen Fehler vermeiden, indem Sie die Option "data_class" auf "MS \ CoreBundle \ Entity \ Photo" setzen oder einen Ansichtstransformator hinzufügen, der eine Instanz der Klasse MS \ CoreBundle \ Entity \ Photo in Skalar, Array oder eine Instanz von \ ArrayAccess.
Der Code für den Galerietyp lautet:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('photo', 'collection', array(
'type' => new PhotoType(),
'allow_add' => true,
'data_class' => 'MS\CoreBundle\Entity\Photo',
'prototype' => true,
'by_reference' => false,
));
}
Der Fototyp-Code lautet:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('description', 'text', array('label' => "Title:", 'required' => true))
->add('File')
->add('album', 'entity', array(
'class' => 'MSCoreBundle:Album',
'property' => 'title',
'required' => true,
'query_builder' => function(EntityRepository $er)
{
return $er->createQueryBuilder('a')
->orderBy('a.title', 'ASC');
},
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MS\CoreBundle\Entity\Photo',
));
}
Meine Controller-Funktion ist:
public function newAction($count)
{
for($i = 1; $i <= $count; $i++) {
$entity = new Photo();
}
$form = $this->container->get('ms_core.gallery.form');
$form->setData($entity);
return array(
'entity' => $entity,
'form' => $form->createView()
);
}
Jede Hilfe wäre toll.