src/Controller/Admin/TemoignageCrudController.php line 139

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Temoignage;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  6. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  7. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Knp\Component\Pager\PaginatorInterface;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  18. use EasyCorp\Bundle\EasyAdminBundle\Config\Asset;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  21. use Symfony\Component\HttpFoundation\RequestStack;
  22. class TemoignageCrudController extends AbstractCrudController
  23. {
  24.     public function configureCrud(Crud $crud): Crud
  25.     {
  26.         return $crud->setPageTitle('index''témoignages')
  27.         ->setPageTitle('detail''Détails témoignages')
  28.         ->setPageTitle('new''Créer un témoignage');
  29.     }
  30.     public function __construct(RequestStack $request)
  31.     {
  32.         $this->request $request;
  33.     }
  34.     public static function getEntityFqcn(): string
  35.     {
  36.         return Temoignage::class;
  37.     }
  38.     public function configureActions(Actions $actions): Actions
  39.     {
  40.         return $actions
  41.             // ...
  42.             ->update(Crud::PAGE_INDEXAction::NEW, function (Action $action) {
  43.                 return $action->setLabel('Créer Témoignage');
  44.             })
  45.             ->add(Crud::PAGE_INDEXAction::DETAIL)
  46.             ->update(Crud::PAGE_NEWAction::SAVE_AND_RETURN, function (Action $action) {
  47.                 return $action->setLabel('Enregistrer');
  48.             })
  49.             // in PHP 7.4 and newer you can use arrow functions
  50.             // ->update(Crud::PAGE_INDEX, Action::NEW,
  51.             //     fn (Action $action) => $action->setIcon('fa fa-file-alt')->setLabel(false))
  52.         ;
  53.     }
  54.     public function configureAssets(Assets $assets): Assets
  55.     {
  56.         return $assets->addJsFile(Asset::new('js/temoignageJs.js')->defer());
  57.     }
  58.     public function configureFields(string $pageName): iterable
  59.     {
  60.         return [
  61.             TextField::new('beneficiaire''Bénéficiaire'),
  62.             DateField::new('date'),
  63.             //TextField::new('type'),
  64.             ChoiceField::new('videoType''Type de vidéo')
  65.             ->setChoices([
  66.                 'Url' => 'Url',
  67.                 'Vidéo' => 'Video',])
  68.             ->renderExpanded(),
  69.             TextField::new('url''url')->setColumns('custom_class_url col-sm-6 col-md-6 col-lg-6 col-xxl-6')
  70.             ->hideOnIndex()
  71.             ->setRequired($pageName !== Crud::PAGE_EDIT && $pageName !== Crud::PAGE_NEW),
  72.             ImageField::new('video''vidéo')
  73.             ->setUploadDir('public/imagees/galery')
  74.             ->setBasePath('imagees/galery')
  75.             ->setTemplatePath('admin/fields/video.html.twig')
  76.             ->setRequired($pageName !== Crud::PAGE_EDIT && $pageName !== Crud::PAGE_NEW)
  77.             ->setUploadedFileNamePattern('[randomhash].[extension]')
  78.             ->hideOnIndex()
  79.             ->setRequired($pageName !== Crud::PAGE_EDIT && $pageName !== Crud::PAGE_NEW)
  80.             ->setFormTypeOptions([
  81.                 "attr" => [
  82.                     'accept' => 'video/mp4, video/webm, video/ogg, video/avi, video/mov, video/wmv, video/flv, video/mkv'
  83.                 ]
  84.             ])
  85.             ->setColumns('custom_class_video col-sm-6 col-md-6 col-lg-6 col-xxl-6'),
  86.         
  87.             ChoiceField::new('type''Statut')
  88.             ->setChoices([
  89.                 'Publique' => 'Publique',
  90.                 'Privé' => 'Privé',])
  91.             ->setFormTypeOptions(['placeholder' => 'Veuillez sélectionner le type'])->setColumns('col-sm-6 col-md-6 col-lg-5 col-xxl-3'),
  92.             TextareaField::new('description')->setColumns('col-sm-6 col-md-6 col-lg-6 col-xxl-6'),
  93.             ImageField::new('image''Logo')->setUploadDir('public/imagees/galery')->setBasePath('imagees/galery')
  94.             ->setRequired(false)
  95.             ->setUploadedFileNamePattern('[randomhash].[extension]')
  96.             ->setFormTypeOptions(["attr" => ['accept' => 'image/*, application/pdf, application/vnd.ms-excel']]),
  97.         ];
  98.     }
  99.     public function persistEntity(EntityManagerInterface $entityManager$entityInstance): void
  100.     {
  101.         if ($entityInstance->getVideoType() == 'Url') {
  102.             $entityInstance->setUrl($entityInstance->getUrl());
  103.             $entityInstance->setVideoType('Url');
  104.             $entityInstance->setVideo(" ");
  105.         } else {
  106.             $entityInstance->setVideoType('Video');
  107.             $entityInstance->setUrl(" ");
  108.         }
  109.         $entityManager->persist($entityInstance);
  110.         $entityManager->flush();
  111.     }
  112.     public function updateEntity(EntityManagerInterface $entityManager$entityInstance): void
  113.     {
  114.         if ($entityInstance->getVideoType() == 'Url') {
  115.             $entityInstance->setUrl($entityInstance->getUrl());
  116.             $entityInstance->setVideo(" ");
  117.         } else {
  118.             $entityInstance->setVideoType('Video');
  119.             $entityInstance->setVideo($entityInstance->getVideo());
  120.             $entityInstance->setUrl(" ");
  121.         }
  122.         $entityManager->persist($entityInstance);
  123.         $entityManager->flush();
  124.     }
  125.     #[Route('/show/temoignage/detail/{id}'name'show_temoignage_detail')]
  126.     public function showByTemoignageDetail(Temoignage $temoignageRequest $requestEntityManagerInterface $entityManager): Response
  127.     {
  128.         return $this->render('temoignage/detail.html.twig', [
  129.              'temoignage'=>$temoignage,
  130.          ]);
  131.     }
  132.     #[Route('/list/temoignage/index/'name'index_temoignage')]
  133.     public function listTemoignages(Request $requestEntityManagerInterface $entityManagerPaginatorInterface $paginator): Response
  134.     {
  135.         $donnees $entityManager->getRepository(Temoignage::class)->findAll();
  136.         $temoignages $paginator->paginate(
  137.             $donnees,
  138.             $request->query->getInt('page'1),
  139.             10
  140.         );
  141.         return $this->render('temoignage/index.html.twig', [
  142.              'temoignages'=>$temoignages,
  143.          ]);
  144.     }
  145. }