私はSymfonyには新しく、Symfony FormsとVichuploader-Bundleを使って複数のファイル(画像)をアップロードしようとしています。Symfony:複数のファイルをアップロードするにはどうすればいいですか?
私TestObjectTypeは、Imageオブジェクトのコレクションを保持する必要のある、次のようになります。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('images', CollectionType::class, array(
'entry_type' => new ImageFormType(),
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => TestObject::class
));
}
ImageFormType:コントローラコードの
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('imageFile', VichImageType::class, array(
'required' => false,
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Image::class
));
}
パート:私が得る
public function newAction(Request $request)
$form = $this->createForm(TestObjectType::class, $testObject);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($testObject);
$em->flush();
return $this->redirectToRoute("home");
}
}
送信中に次のエラーが発生しました: Neither the property "imageFile" nor one of the methods "getImageFile()", "imageFile()", "isImageFile()", "hasImageFile()", "__get()" exist and have public access in class "TestBundle\Entity\TestObject".
私のTestObjectにはimageFile
というプロパティはありませんが、私のImageオブジェクトはありません。ここには何が欠けていますか? ImageオブジェクトのimageFile
プロパティが使用されないのはなぜですか?私はすでにHow to Upload FilesとCollectionType Fieldを読んだことがありましたが、あまり役に立ちませんでした。
EDITは
たぶん私のエンティティのスニペットは役に立つかもしれません:
TestObject
/**
* @ORM\OneToMany(targetEntity="TestBundle\Entity\Image", mappedBy="testObject")
*/
private $images;
画像
/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName")
*
* @var File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*/
private $imageFile;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $imageName;
/**
* @ORM\ManyToOne(targetEntity="TestBundle\Entity\TestObject", inversedBy="images")
* @ORM\JoinColumn(name="test_object_id", referencedColumnName="id")
*/
private $testObject;
ImageエンティティのimageFileおよびimageNameプロパティにgetterおよびsetterが定義されていますか? –
はい、すべてのプロパティにはゲッターとセッターが定義されています。 – baris1892