src/Controller/Admin/FaqCrudController.php line 98

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Faq;
  4. use App\Entity\FaqTheme;
  5. use App\Service\HtmlSanitizerService;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  8. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  17. use Knp\Component\Pager\PaginatorInterface;
  18. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. class FaqCrudController extends AbstractBaseCrudController
  22. {
  23.     public function __construct(private HtmlSanitizerService $htmlSanitizer)
  24.     {
  25.     }
  26.     public static function getEntityFqcn(): string
  27.     {
  28.         return Faq::class;
  29.     }
  30.     public function configureActions(Actions $actions): Actions
  31.     {
  32.         $actions->update(Crud::PAGE_NEWAction::SAVE_AND_RETURN, function (Action $action) {
  33.             return $action->setLabel('Enregistrer');
  34.         });
  35.         return $actions;
  36.     }
  37.     public function configureCrud(Crud $crud): Crud
  38.     {
  39.         return $crud
  40.         ->setPageTitle('index''Gestion des FAQ')
  41.             // ->setPageTitle('detail', )
  42.             // ->setPageTitle('edit', fn (Category $category) => sprintf('Editing <b>%s</b>', $category->getName()))
  43.         ;
  44.     }
  45.     public function configureFields(string $pageName): iterable
  46.     {
  47.         return [
  48.             IdField::new('id')->hideOnForm(),
  49.             AssociationField::new('faqTheme') ->setFormTypeOption('choice_label''title'),
  50.             TextEditorField::new('question')->formatValue(function ($value) {
  51.                 return $value ;
  52.             }),
  53.             TextEditorField::new('reponse''RĂ©ponse')->formatValue(function ($value) {
  54.                 return $value ;
  55.             }),
  56.         ];
  57.     }
  58.     public function persistEntity(EntityManagerInterface $entityManager$entityInstance): void
  59.     {
  60.         if ($entityInstance instanceof Faq) {
  61.             $this->sanitizeFaq($entityInstance);
  62.         }
  63.         $entityManager->persist($entityInstance);
  64.         $entityManager->flush();
  65.     }
  66.     public function updateEntity(EntityManagerInterface $entityManager$entityInstance): void
  67.     {
  68.         if ($entityInstance instanceof Faq) {
  69.             $this->sanitizeFaq($entityInstance);
  70.         }
  71.         $entityManager->flush();
  72.     }
  73.     private function sanitizeFaq(Faq $faq): void
  74.     {
  75.         $faq->setQuestion($this->htmlSanitizer->sanitize($faq->getQuestion()));
  76.         $faq->setReponse($this->htmlSanitizer->sanitize($faq->getReponse()));
  77.     }
  78.     #[Route('/show/faq'name'show_faq')]
  79.     public function showByFaq(Request $requestEntityManagerInterface $entityManagerPaginatorInterface $paginator): Response
  80.     {
  81.         //$donnees = $entityManager->getRepository(FaqTheme::class)->findAll();
  82.         $donnees $entityManager->getRepository(FaqTheme::class)->getLastsFaqTheme(02);
  83.         // $faq = $paginator->paginate(
  84.         //     $donnees,
  85.         //     $request->query->getInt('page', 1),
  86.         //     10
  87.         // );
  88.         return $this->render('faq/index.html.twig', [
  89.             'faqs'=>$donnees
  90.         ]);
  91.     }
  92.     #[Route('ajax/get/faqtheme'name'ajax_get_faqtheme')]
  93.     public function getFaqTheme(Request $requestEntityManagerInterface $em): JsonResponse
  94.     {
  95.         /** @var  $result */
  96.         $result = [];
  97.         try {
  98.             
  99.             $donnees $em->getRepository(FaqTheme::class)->getLastsFaqTheme($request->query->get('offset'), 3);
  100.             foreach ($donnees as $key => $obj) {
  101.                 $faqs=[];
  102.                 foreach ($donnees[$key]->getFaqs() as $key2 => $obj2) {
  103.                     $faqs[$key2] = [
  104.                         'id' => $obj2->getId(),
  105.                         'question' => $this->htmlSanitizer->sanitize($obj2->getQuestion()),
  106.                         'reponse' => $this->htmlSanitizer->sanitize($obj2->getReponse()),
  107.                     ];
  108.                 }
  109.                 $result[$key] = ['id' => $obj->getId(),'title' => $obj->getTitle(), 'faqs' => $faqs];
  110.             }
  111.         } catch (\Exception $e) {
  112.             echo $e->getMessage();
  113.         }
  114.         return new JsonResponse(json_encode($result));
  115.     }
  116. }