Bonjour à tous,

Je suis en train de travailler sur un projet en Symfony 5.4 avec le bundle EasyAdmin 3.
Voici mon controller CRUD :

<?php

namespace App\Controller\Admin;

use App\Entity\FormulairePhotos;
use App\Entity\FormulaireEtapes;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Form\Type\FileUploadType;
use Doctrine\ORM\EntityManagerInterface;

class FormulairePhotosCrudController extends AbstractCrudController
{
    public static function getEntityFqcn(): string
    {
        return FormulairePhotos::class;
    }

    public function configureCrud(Crud $crud): Crud
    {
        return $crud->setEntityLabelInSingular('Formulaire client')->setEntityLabelInPlural('Formulaires clients');
    }

     public function configureFields(string $pageName): iterable
     {
        return [
            IdField::new('id')->onlyOnIndex(),
            AssociationField::new('formulaireEtapes')->setFormTypeOption('choice_label', 'Libelle_formulaire_etapes'),
            ImageField::new('chemin_formulaire_photos', 'Photo des étapes')->setFormType(FileUploadType::class)->setBasePath('images/formulaires_clients')->setUploadDir('public/images/formulaires_clients')->setColumns(6)->setFormTypeOptions(['attr' => ['accept' => 'application/jpg']])->setUploadedFileNamePattern('[name].[extension]')/*->setFormTypeOption('upload_delete', function(File $file) {})*/,
        ];
    }
}

Lorsqu'on upload une image, je souhaiterais que cette dernière soit redimensionnée et surtout converti au format .webp.
Cela est-il faisable ? Si oui, pouvez-vous m'indiquer comment puis-je obtenir le résultat souhaité ?

Merci par avance pour votre aide !

1 réponse


Loic_cdi45
Auteur
Réponse acceptée

Bonjour,

J'ai résolu mon problème et pour ceux que cela intéresse, voici les grandes lignes :

  1. Créer son propre service qui permettra de redimensioner et convertir l'image en .webp.
  2. Appeler ce service dans le controller CRUD.
  3. Surcharger la méthode persistEntity pour faire appel au service créé précédemment.