src/EasyAdmin/Controller/RemplacantCrudController.php line 93

Open in your IDE?
  1. <?php
  2. namespace App\EasyAdmin\Controller;
  3. use App\Entity\Remplacant;
  4. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  5. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  6. use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
  7. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\PasswordField;
  13. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  15. use App\Entity\RemplacantSpecialite;
  16. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  18. use EasyCorp\Bundle\EasyAdminBundle\Filter\TextFilter;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
  20. use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
  21. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  22. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  23. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  24. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  25. use App\Form\RemplacantSpecialiteType;
  26. class RemplacantCrudController extends AbstractCrudController implements EventSubscriberInterface
  27. {
  28.     private $passwordEncoder;
  29.     public function __construct(UserPasswordEncoderInterface $passwordEncoder)
  30.     {
  31.         $this->passwordEncoder $passwordEncoder;
  32.     }
  33.     public static function getEntityFqcn(): string
  34.     {
  35.         return Remplacant::class;
  36.     }
  37.     public static function getSubscribedEvents(): array
  38.     {
  39.         return [
  40.             BeforeEntityPersistedEvent::class => 'hashPassword',
  41.             BeforeEntityUpdatedEvent::class => 'hashPassword',
  42.         ];
  43.     }
  44.     public function configureFilters(Filters $filters): Filters
  45.     {
  46.         return $filters
  47.             ->add(TextFilter::new('name''Prénom'))
  48.             ->add(TextFilter::new('lastname''Nom'))
  49.             ->add(TextFilter::new('mail''E-mail'));
  50.     }
  51.     public function configureFields(string $pageName): iterable
  52.     {
  53.         return [
  54.             IdField::new('id')->hideOnForm(),
  55.             TextField::new('civilite''Civilité'),
  56.             TextField::new('name''Prénom'),
  57.             TextField::new('lastname''Nom'),
  58.             EmailField::new('mail''E-mail'),
  59.             IntegerField::new('phone''Téléphone'),
  60.             ImageField::new('imgUrl')
  61.                 ->setLabel('Profile Image')  
  62.                 ->setBasePath('uploads/images'
  63.                 ->setUploadDir('public/uploads/images'
  64.                 ->setRequired(false),  
  65.                 
  66.                 TextField::new('plainPassword''Mot de passe')
  67.                 ->setFormTypeOption('attr', ['type' => 'password'])
  68.                 ->setRequired(false)
  69.                 ->setHelp('Le mot de passe sera encodé automatiquement.')->onlyOnForms(),
  70.             
  71.             AssociationField::new('id_audio''Audio')->autocomplete(),
  72.             CollectionField::new('rdvs''Rendez-vous')->onlyOnDetail(),
  73.             CollectionField::new('remplacantSpecialites''Spécialités')
  74.             ->setEntryType(RemplacantSpecialiteType::class) 
  75.             ->allowAdd()
  76.             ->allowDelete()
  77.             ->setFormTypeOptions([
  78.                 'by_reference' => false,
  79.             ]),
  80.         ];
  81.     }
  82.     public function hashPassword($event): void
  83.     {
  84.         $entity $event->getEntityInstance();
  85.         if (!$entity instanceof Remplacant) {
  86.             return;
  87.         }
  88.         if (!empty($entity->plainPassword)) {
  89.             $hashedPassword password_hash($entity->plainPasswordPASSWORD_DEFAULT);
  90.             $entity->setPassword($hashedPassword);
  91.         }
  92.     }
  93.     public function configureActions(Actions $actions): Actions
  94.     {
  95.         return $actions
  96.             ->add(Crud::PAGE_INDEXAction::DETAIL);
  97.     }
  98.     
  99. }