Я выполняю действия, описанные в этой документации https://symfony.com/doc/current/controller/upload_file.html, чтобы разрешить загрузку файла.Он отлично работает для добавления нового элемента, но когда я пытаюсь отредактировать свою сущность, я получаю следующую ошибку:
Ожидается, что данные представления формы будут экземпляром класса Symfony \ Component \ HttpFoundation\ File \ File, но является (n) строкой.Вы можете избежать этой ошибки, установив для параметра data_class значение null или добавив преобразователь представления, который преобразует строку (n) в экземпляр Symfony \ Component \ HttpFoundation \ File \ File.
попробовал код, подобный тому, что предлагается в этой статье, чтобы добавить путь к папке как тип файла к объекту, как это в моем методе обновления:
public function editAction(Request $request, Advertiser $advertiser)
{
$advertiser->setLogo(
new File($this->getParameter('logo_directory') .'/' . $advertiser->getLogo())
);
$editForm = $this->createForm(AdvertiserType::class, $advertiser);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('advertiser_list');
}
return $this->render('advertiser/index.html.twig', [
'form' => $editForm->createView()
]);
}
Параметр logo_directory определен правильно (и работает нормально для созданияновые лица).
Пожалуйста, дайте мне знать, если у вас есть идеи, что я делаю неправильно.
Спасибо за помощь.
ОБНОВЛЕНИЕ: В этой статье Ожидается, что данные представления формы будут экземпляром класса ... но это (n) строка есть предлагаемое решение для включения в код построителя формы следующего:
->add('file', FileType::class, array('data_class' => null))
ИтакЯ делаю это сейчас, и форма редактирования покажет - но она не предварительно подготовлена к предыдущему выбору.
->add('logo', FileType::class, array('data_class' => null), ['label' => 'Logo (JPG or PNG file)'])
Любые мысли о том, как это можно изменить, чтобы форма показывалась вместе спредыдущий выбор предварительно заполнен?