Ожидаемый аргумент, загрузка нескольких файлов в Symfony?

Я разрабатываю программу загрузки нескольких файлов.

Чтобы понять свою проблему, я постараюсь вам ее описать:

I have two Entities (Objects and Images) with an "1 ... n" Relation, so that every Object can have "n" Images.

Если я попытаюсь загрузить несколько изображений, мой контроллер выдаст исключение, но я не использую объект Images. Не знаю, как решить эту проблему и получить работающий загрузчик.

Expected argument of type "App\Entity\Images", "Symfony\Component\HttpFoundation\File\UploadedFile" given.

Контроллер:

/**
 * @Route("/new", name = "objects_new", methods = "GET|POST")
 */
public function new(Request $request): Response
{
    $object = new Objects();
    $form = $this->createForm(ObjectsType::class, $object);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();

        $file = $form->get('logo')->getData();
        $fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
        $file->move(
            $this->getParameter('logo_directory'),
            $fileName
        );
        $object->setLogo($fileName);

        foreach ($request->files as $uploadedFile) {
            $uploadedFile = current($uploadedFile['file']);
            dump($uploadedFile);
        }
        $em->persist($object);
        $em->flush();

        return $this->redirectToRoute('home');
    }

    return $this->render('objects/new.html.twig', [
        'object' => $object,
        'form' => $form->createView(),
    ]);
}

Сущность объектов:

/**
 * @ORM\OneToMany(targetEntity = "App\Entity\Images", mappedBy = "objects")
 */
private $images;

Сущность изображений:

/**
 * @ORM\ManyToOne(targetEntity = "App\Entity\Objects", inversedBy = "images")
 */
private $objects;

ObjectsType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('designation')
        ->add('description')
        ->add('place')
        ->add('coordL', null, array(
            'attr' => array('readonly' => 'true'),
        ))
        ->add('coordB', null, array(
            'attr' => array('readonly' => 'true'),
        ))
        ->add('category')
        ->add('logo', FileType::class, array('label' => ' ', 'data_class' => null))
        ->add('images', FileType::class, array('label' => 'Bilder (png, jpg, jpeg)', 'data_class' => null, 'multiple' => true))
    ;
}

Если кто-то знает, как решить мою проблему, помогите мне, пожалуйста.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
229
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше поле $images настроено на тип App\Entity\Images, но в вашем FormType вы устанавливаете его на FileType.

Вот строчка, о которой я говорю:

->add('images', FileType::class, array('label' => 'Bilder (png, jpg, jpeg)', 'data_class' => null, 'multiple' => true))

С этого момента у вас есть несколько способов решить вашу проблему, среди которых:

  • Либо добавьте параметр mapped => false в это поле в вашем FormType, а затем обработайте процесс (преобразования файла в объект Image) вручную с вашего контроллера.

  • Или создайте собственный ImageFormType, сопоставленный с вашей сущностью Image, который содержит ваше поле FileType (хотя может потребоваться некоторый хитрый код)

Видеть : тип формы отображается ложно symfony2 и https://symfony.com/doc/current/form/create_custom_field_type.html для получения дополнительной информации.

Спасибо, я понял;)

Daniel 08.08.2018 12:01

Другие вопросы по теме