Salut j'essai de creer un formulaire pour ajouter un produit en base de données mais je stagne au niveau de
la création du champ d'uploading du fichier image.
Le champs
->add('images', FileType::class, [
'required' => false,
'label' => 'Image:Format(JPEG, PNG, ou GIF)',
'attr'=>[
'class'=>'uploadArticleImg',
],
'constraints' => [
new NotBlank([
'message'=>'Importez une image'
]),
new File([
'maxSize' => '5M',
'mimeTypes' => [
'image/jpeg',
'image/png',
'image/gif',
],
'mimeTypesMessage' => 'Le format de cette image n\'est pas autorisé',
'maxSizeMessage' => 'L\'image est trop volumineuse. Limite:{{ limit }}',
]),
],
])
La configuration
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Products::class,
]);
}
L'antité Product
#[ORM\OneToMany(mappedBy: 'products', targetEntity: Images::class, orphanRemoval: true)]
private Collection $images;
public function __construct()
{
$this->images = new ArrayCollection();
}
*
*
*
/**
* @return Collection<int, Images>
*/
public function getImages(): Collection
{
return $this->images;
}
public function addImage(Images $image): self
{
if (!$this->images->contains($image)) {
$this->images->add($image);
$image->setProducts($this);
}
return $this;
}
public function removeImage(Images $image): self
{
if ($this->images->removeElement($image)) {
// set the owning side to null (unless already changed)
if ($image->getProducts() === $this) {
$image->setProducts(null);
}
}
return $this;
}
Ce que je veux
Ce souhaite ajouter ce champ image du produit en meme temps que toutes
les informations liées à ce produit via l'antité Products
Ce que j'obtiens
The form's view data is expected to be a "Symfony\Component\HttpFoundation\File\File", but it is a "Doctrine\Common\Collections\ArrayCollection". You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms "Doctrine\Common\Collections\ArrayCollection" to an instance of "Symfony\Component\HttpFoundation\File\File".
Bonjour,
Tu peux te référer à cette documentation : https://symfony.com/doc/current/controller/upload_file.html. Cela t'aidera peut être :).
L'utilisation du bundle VichUploader est une meilleure solution je pense !