src/Controller/backend/CategoryController.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\Controller\backend;
  3. use App\Entity\Category;
  4. use App\Form\CategoryType;
  5. use App\Repository\CategoryRepository;
  6. use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException;
  7. use Oi\UtilityBundle\Service\BackRouterInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. /**
  15.  * @Route("/category")
  16.  */
  17. class CategoryController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/index", name="category_index", methods={"GET"})
  21.      */
  22.     public function index(Request $requestCategoryRepository $categoryRepository) : Response
  23.     {
  24.         $categories $categoryRepository->findAll();
  25.         return $this->render('backend/category/index.html.twig', [
  26.            'categories' =>$categories,
  27.         ]);
  28.     }
  29.     /**
  30.      * @Route ("/new", name="category_new", methods={"GET","POST"})
  31.      */
  32.     public function new (Request $request,  BackRouterInterface $backRouter) : Response
  33.     {
  34.         $category = new Category();
  35.         $form $this->createForm(CategoryType::class, $category);
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted() && $form->isValid()) {
  38.             $entityManager $this->getDoctrine()->getManager();
  39.             $entityManager->persist($category);
  40.             $entityManager->flush();
  41.             return $this->redirect($backRouter->retrieveUrl(self::class, 'category_index'));
  42.         }
  43.         return $this->render('backend/category/new.html.twig',[
  44.             'category' => $category,
  45.             'form' => $form->createView(),
  46.         ]);
  47.     }
  48.     /**
  49.      * @Route ("/{id}/", name="category_edit")
  50.      */
  51.     public function edit(Request $requestBackRouterInterface $backRouterCategory $category): Response
  52.     {
  53.         $form $this->createForm(CategoryType::class, $category);
  54.         $form->handleRequest($request);
  55.         if ($form->isSubmitted() && $form->isValid()) {
  56.             $this->getDoctrine()->getManager()->flush();
  57.             return $this->redirect($backRouter->retrieveUrl(self::class, 'category_index'));
  58.         }
  59.         return $this->render('backend/category/edit.html.twig', [
  60.             'category' => $category,
  61.             'form' => $form->createView(),
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/{id}", name="category_show", methods={"GET"}, options={"expose": true})
  66.      */
  67.     public function show(BackRouterInterface $backRouterCategory $category): Response
  68.     {
  69.         $backRouter->saveRoute(self::class);
  70.         return $this->render('backend/category/show.html.twig', [
  71.             'category' => $category,
  72.         ]);
  73.     }
  74.     /**
  75.      * @Route("/{id}", name="category_delete")
  76.      */
  77.     public function delete(Request $requestBackRouterInterface $backRouterFlashBagInterface $flashBagTranslatorInterface $translatorCategory $category): Response
  78.     {
  79.         if ($this->isCsrfTokenValid('delete' $category->getId(), $request->request->get('_token'))) {
  80.             $entityManager $this->getDoctrine()->getManager();
  81.             try {
  82.                 $entityManager->remove($category);
  83.                 $entityManager->flush();
  84.             } catch (ForeignKeyConstraintViolationException $exception) {
  85.                 $flashBag->add('error'$translator->trans('excellence.message.error.cannot_delete'));
  86.             }
  87.         }
  88.         return $this->redirect($backRouter->retrieveUrl(self::class, 'category_index'));
  89.     }
  90.     /**
  91.      * Lists all category entities.
  92.      *
  93.      * @Route("-search", name="category_search", defaults={"_format": "json"}, methods={"POST"})
  94.      */
  95.     public function search(Request $requestCategoryRepository $categoryRepository)
  96.     {
  97.         $categories $categoryRepository->advancedFindBy([
  98.             'name' => [
  99.                 'op' => 'ilike%',
  100.                 'value' => $request->get('q')
  101.             ],
  102.         ], ['q.name' => 'asc'], $request->get('limit'));
  103.         $out = [];
  104.         foreach ($categories as $category) {
  105.             /* @var $category Category */
  106.             $out[] = ['id' => $category->getId(), 'label' => $category->getName()];
  107.         }
  108.         return $this->json($out);
  109.     }
  110.     /**
  111.      * Lists all category entities.
  112.      *
  113.      * @Route("-find", name="category_find", defaults={"_format": "json"}, methods={"POST"}, options={"expose": true})
  114.      */
  115.     public function find(Request $requestCategoryRepository $categoryRepository)
  116.     {
  117.         $categories $categoryRepository->findBy(['id' => $request->get('ids')]);
  118.         $out = [];
  119.         foreach ($categories as $category) {
  120.             /* @var $category Category */
  121.             $out[] = ['id' => $category->getId(), 'label' => $category->getName()];
  122.         }
  123.         return $this->json($out);
  124.     }
  125. }