src/Controller/FeedsController.php line 70

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Psr\Log\LoggerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\Routing\RouterInterface;
  11. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Symfony\Component\Form\FormError;
  14. use App\Entity\Feed;
  15. use App\Form\Feed\NewFeedType;
  16. use App\Form\Feed\EditFeedType;
  17. use App\Form\Feed\ReadFeedType;
  18. use App\Form\Feed\DeleteFeedType;
  19. use App\Repository\FeedItemRepository;
  20. use App\Repository\FeedRepository;
  21. use App\Service\MenuService;
  22. class FeedsController extends AbstractController
  23. {
  24.     /**
  25.      *
  26.      * @Route("/feeds", name="feeds", defaults={"title": "Feeds", "weight": 3, "granted": "ROLE_ADMIN"})
  27.      */
  28.     public function feeds(LoggerInterface $loggerRequest $requestAuthenticationUtils $authFeedRepository $feedRepositoryRouterInterface $routerMenuService $menuTranslatorInterface $translator): Response
  29.     {
  30.         $options = [
  31.             'menu' => $menu->getMenu(),
  32.             'title' => 'Адрес',
  33.         ];
  34.         $feeds $feedRepository->findAll();
  35.         if (count($feeds) > 0) {
  36.             $options['entitys'] = $feeds;
  37.         }
  38.         if ($this->isGranted('ROLE_ADMIN')) {
  39.             $newFeedForm NewFeedType::getForm($this->get('form.factory'), $request$this->getDoctrine()->getManager());
  40.             if ($newFeedForm == null) {
  41.                 return $this->redirectToRoute('feeds');
  42.             }
  43.             $options['newEntityForm'] = $newFeedForm;
  44.             $deleteFeedForms = [];
  45.             foreach ($feeds as $feed) {
  46.                 $deleteFeedForm DeleteFeedType::getForm($this->get('form.factory'), $request$this->getDoctrine()->getManager(), $feed);
  47.                 if ($deleteFeedForm == null) {
  48.                     return $this->redirectToRoute('feeds');
  49.                 }
  50.                 $deleteFeedForms[$feed->getId()] = $deleteFeedForm;
  51.             }
  52.             if (count($deleteFeedForms) > 0) {
  53.                 $options['deleteEntityForms'] = $deleteFeedForms;
  54.             }
  55.         }
  56.         return $this->render('entitys.html.twig'$options);
  57.     }
  58.     /**
  59.      *
  60.      * @Route("/feed-{id}", name="feed")
  61.      */
  62.     public function feed(LoggerInterface $loggerRequest $requestAuthenticationUtils $authFeedRepository $repositoryFeedItemRepository $itemRepositoryRouterInterface $routerMenuService $menuTranslatorInterface $translatorint $id): Response
  63.     {
  64.         $entity $repository->find($id);
  65.         $formFactory $this->get('form.factory');
  66.         $manager $this->getDoctrine()->getManager();
  67.         $entityForms = [];
  68.         if ($this->isGranted('ROLE_ADMIN') && $entity != null) {
  69.             $editForm EditFeedType::getForm($formFactory$request$manager$entity);
  70.             if ($editForm == null) {
  71.                 return $this->redirectToRoute('feed', ['id' => $id]);
  72.             }
  73.             $entityForms[] = $editForm;
  74.             $readForm ReadFeedType::getForm($formFactory$request$manager$itemRepository$entity);
  75.             if ($readForm == null) {
  76.                 return $this->redirectToRoute('feed', ['id' => $id]);
  77.             }
  78.             $entityForms[] = $readForm;
  79.             $deleteForm DeleteFeedType::getForm($formFactory$request$manager$entity);
  80.             if ($deleteForm == null) {
  81.                 return $this->redirectToRoute('feeds');
  82.             }
  83.             $entityForms[] = $deleteForm;
  84.         }
  85.         $options = [
  86.             'menu' => $menu->getMenu(),
  87.             'entityForms' => $entityForms,
  88.         ];
  89.         return $this->render('entity.html.twig'$options);
  90.     }
  91. }