src/Controller/FeedItemsController.php line 65

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\FeedItem\NewFeedItemType;
  16. use App\Form\FeedItem\EditFeedItemType;
  17. use App\Form\FeedItem\ReadFeedItemType;
  18. use App\Form\FeedItem\DeleteFeedItemType;
  19. use App\Repository\FeedItemRepository;
  20. use App\Service\MenuService;
  21. class FeedItemsController extends AbstractController
  22. {
  23.     /**
  24.      *
  25.      * @Route("/feeditems", name="feeditems", defaults={"title": "Feed items", "weight": 4, "granted": "ROLE_ADMIN"})
  26.      */
  27.     public function feeditems(LoggerInterface $loggerRequest $requestAuthenticationUtils $authFeedItemRepository $feedItemRepositoryRouterInterface $routerMenuService $menuTranslatorInterface $translator): Response
  28.     {
  29.         $options = [
  30.             'menu' => $menu->getMenu(),
  31.             'title' => 'Адрес',
  32.         ];
  33.         $feedItems $feedItemRepository->findBy([], ['pubDate' => 'DESC']);
  34.         if (count($feedItems) > 0) {
  35.             $options['entitys'] = $feedItems;
  36.         }
  37.         if ($this->isGranted('ROLE_ADMIN')) {
  38.             $newFeedItemForm NewFeedItemType::getForm($this->get('form.factory'), $request$this->getDoctrine()->getManager());
  39.             if ($newFeedItemForm == null) {
  40.                 return $this->redirectToRoute('feeditems');
  41.             }
  42.             $options['newEntityForm'] = $newFeedItemForm;
  43.             $deleteFeedItemForms = [];
  44.             foreach ($feedItems as $feedItem) {
  45.                 $deleteFeedItemForm DeleteFeedItemType::getForm($this->get('form.factory'), $request$this->getDoctrine()->getManager(), $feedItem);
  46.                 if ($deleteFeedItemForm == null) {
  47.                     return $this->redirectToRoute('feeditems');
  48.                 }
  49.                 $deleteFeedItemForms[$feedItem->getId()] = $deleteFeedItemForm;
  50.             }
  51.             if (count($deleteFeedItemForms) > 0) {
  52.                 $options['deleteEntityForms'] = $deleteFeedItemForms;
  53.             }
  54.         }
  55.         return $this->render('entitys.html.twig'$options);
  56.     }
  57.     /**
  58.      *
  59.      * @Route("/feeditem-{id}", name="feeditem")
  60.      */
  61.     public function feeditem(LoggerInterface $loggerRequest $requestAuthenticationUtils $authFeedItemRepository $repositoryRouterInterface $routerMenuService $menuTranslatorInterface $translatorint $id): Response
  62.     {
  63.         $entity $repository->find($id);
  64.         $formFactory $this->get('form.factory');
  65.         $manager $this->getDoctrine()->getManager();
  66.     $entityForms = [];
  67.         if ($this->isGranted('ROLE_ADMIN') && $entity != null) {
  68.             $form EditFeedItemType::getForm($formFactory$request$manager$entity);
  69.             if ($form == null) {
  70.                 return $this->redirectToRoute('feeditem', ['id' => $id]);
  71.             }
  72.             $entityForms[] = $form;
  73.             $form ReadFeedItemType::getForm($logger$formFactory$request$manager$entity);
  74.             if ($form == null) {
  75.                 return $this->redirectToRoute('feeditem', ['id' => $id]);
  76.             }
  77.             $entityForms[] = $form;
  78.             $form DeleteFeedItemType::getForm($formFactory$request$manager$entity);
  79.             if ($form == null) {
  80.                 return $this->redirectToRoute('feeditems');
  81.             }
  82.             $entityForms[] = $form;
  83.         }
  84.         $options = [
  85.             'menu' => $menu->getMenu(),
  86.             'entityForms' => $entityForms,
  87.         ];
  88.         return $this->render('entity.html.twig'$options);
  89.     }
  90. }