ImageType
ImageType.php
<?php
namespace App\Form;
use App\Entity\Image;
use App\Entity\Auteur;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Validator\Constraints\File;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
class ImageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('titre', TextType::class)
->add('auteur', EntityType::class, [
'class' => Auteur::class,
'choice_label' => 'nom',
'label' => 'Auteur de la photo',
'placeholder' => 'Choisir un auteur',
])
->add('date', null, [
'widget' => 'single_text',
])
->add('fichier', FileType::class, [
'label' => 'Image (Fichier JPG/PNG)',
'mapped' => false,
'required' => true,
'constraints' => [
new File([
'maxSize' => '2048k',
'mimeTypes' => [
'image/jpeg',
'image/png',
'image/webp',
],
'mimeTypesMessage' => 'Merci d\'uploader une image valide',
])
],
])
->add('save', SubmitType::class, ['label' => 'Envoyer image'])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Image::class,
]);
}
}
explication
Le fichier ImageType.php va gere le formulaire pour le upload d'image