Я получаю сообщение об ошибке при попытке сохранить форму с несколькими файлами ввода.
У меня есть две сущности: Inquiry и UploadedDocumend, которые находятся в отношении один ко многим.
Вот преобразователь для загруженных файлов:
public function reverseTransform($uploadedDocuments)
{
$attachments = array();
foreach($uploadedDocuments as $file){
if($file) {
$uploadedDocument = new UploadedDocument();
/* @var $uploadedDocument UploadedDocument */
$uploadedDocument->setFile($file);
$uploadedDocument->setCreatedOn(new \DateTime("now"));
$this->em->persist($uploadedDocument);
$attachments[] = $uploadedDocument;
}
}
return $attachments;
}
А вот код для добавления преобразователя:
->add($builder->create(
'uploadedDocuments', 'file', [
'required' => false,
'multiple' => true,
'label' => "Anhänge"]
)->addModelTransformer(new UploadsTransformer($this->em)))
С этим я получаю следующее исключение:
Предполагается, что данные представления формы являются экземпляром класса Symfony \ Component \ HttpFoundation \ File \ File, но являются экземпляром класса Doctrine \ Common \ Collections \ ArrayCollection. Вы можете избежать этой ошибки, установив для параметра data_class значение null или добавив преобразователь представления, который преобразует экземпляр класса Doctrine \ Common \ Collections \ ArrayCollection в экземпляр Symfony \ Component \ HttpFoundation \ File \ File.
Я не могу изменить распознаватель. Потому что мне это нужно. Я думаю.
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'Lengoo\FormhandlerBundle\Entity\Inquiry',
));
}
Как мне изменить трансформатор, чтобы объект был создан правильно?
К вашему сведению: это работает, если я просто сохраню путь от файла к массиву. Но я хочу отношения между двумя объектами.
Задача ещё не решена.
Других решений пока нет …