Php Symfony 4-VichUploaderBundle-未呈现文件输入

Php Symfony 4-VichUploaderBundle-未呈现文件输入,php,symfony,Php,Symfony,我有一个实体“FicheProduit”,与我的实体“Photo”有关,因为一个产品表可以有多张照片。在我的表单中,我希望通过VichUploaderBundle创建多个上载,但我遇到以下错误: 函数Vich\UploaderBundle\Form\Type\VichImageType::\uuu construct(),0在第92行的C:\wamp64\www\blh\u wines\vendor\symfony\Form\FormRegistry.php中传递,至少需要3个参数 FicheP

我有一个实体“FicheProduit”,与我的实体“Photo”有关,因为一个产品表可以有多张照片。在我的表单中,我希望通过VichUploaderBundle创建多个上载,但我遇到以下错误:

函数Vich\UploaderBundle\Form\Type\VichImageType::\uuu construct(),0在第92行的C:\wamp64\www\blh\u wines\vendor\symfony\Form\FormRegistry.php中传递,至少需要3个参数

FicheProduit.php:

<?php

declare(strict_types = 1);

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Class FicheProduit
 * 
 * @package App\Entity
 *
 * @ORM\Entity
 */
class FicheProduit
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer", options={"unsigned":true}, nullable=false)
     *
     * @var int
     */
    protected $id;

    /**
     * @ORM\OneToMany(targetEntity="Photo", mappedBy="ficheProduit", cascade={"persist"})
     *
     * @Assert\Valid()
     *
     * @var Photo[]|ArrayCollection
     */
    protected $photos;

    /**
     * FicheProduit constructor.
     */
    public function __construct()
    {
        $this->photos = new ArrayCollection();
    }

    /**
     * @return int
     */
    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * @param int $id
     */
    public function setId(int $id): void
    {
        $this->id = $id;
    }

    /**
     * @return Photo[]|ArrayCollection
     */
    public function getPhotos()
    {
        return $this->photos;
    }

    /**
     * @param Photo[]|ArrayCollection $photos
     */
    public function setPhotos($photos): void
    {
        $this->photos = $photos;
    }

    /**
     * Add photo
     *
     * @param Photo $photo
     *
     * @return FicheProduit
     */
    public function addPhoto(Photo $photo)
    {
        $photo->setProduct($this);
        $this->photos[] = $photo;

        return $this;
    }

    /**
     * Remove photo
     *
     * @param Photo $photo
     */
    public function removePhoto(Photo $photo)
    {
        $this->photos->removeElement($photo);
    }
}
easy_admin.yaml:

easy_admin:
    entities:
        FicheProduit:
            class: App\Entity\FicheProduit
            list:
                title: 'Fiche produit'
            form:
                title: 'Ajouter une fiche produit'
                fields:
                    - { property: 'photos', type: 'collection', type_options: { entry_type: 'App\Form\PhotoType', by_reference: false }}
PhotoType.php:

<?php

declare(strict_types = 1);

namespace App\Form;

use App\Entity\Photo;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Vich\UploaderBundle\Form\Type\VichImageType;

/**
 * Class PhotoType
 *
 * @package App\Form
 */
class PhotoType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('imageName')
            ->add('imageFile', VichImageType::class, [
                'required' => false,
                'allow_delete' => true,
                'download_label' => '...',
                'download_uri' => true,
                'image_uri' => true,
                'imagine_pattern' => '...',
            ])
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Photo::class,
        ]);
    }
}
据此:

->add('imageFile', CollectionType::class, ['entry_type' => VichImageType::class])
我没有更多的错误,但是我的文件输入没有显示,并且旁边有一个“0”

我遵循了此文档,但对我帮助不大:


我本人从未使用过EasyAdmin,但我认为您需要为照片实体定义一个管理员:

easy_admin:
    entities:
         Photo:
            # ...
            form:
                fields:
                    - { property: 'imageFile', type: 'vich_image' }
我认为EasyAdmin界面不需要PhotoType formType

如果您按照本教程进行操作:
您将看到示例中没有FormType

您是否查阅了有关easy admin+VichUploader的文档?是的,但是没有解决办法。。明白了吗?
->add('imageFile', VichImageType::class, [
                    'required' => false,
                    'allow_delete' => true,
                    'download_label' => '...',
                    'download_uri' => true,
                    'image_uri' => true,
                    'imagine_pattern' => '...',
                ])
->add('imageFile', CollectionType::class, ['entry_type' => VichImageType::class])
easy_admin:
    entities:
         Photo:
            # ...
            form:
                fields:
                    - { property: 'imageFile', type: 'vich_image' }