src/Controller/MenuController.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\MenuItemRepository;
  4. use Doctrine\Persistence\ObjectManager;
  5. use Sylius\Bundle\ResourceBundle\Controller\AuthorizationCheckerInterface;
  6. use Sylius\Bundle\ResourceBundle\Controller\EventDispatcherInterface;
  7. use Sylius\Bundle\ResourceBundle\Controller\FlashHelperInterface;
  8. use Sylius\Bundle\ResourceBundle\Controller\NewResourceFactoryInterface;
  9. use Sylius\Bundle\ResourceBundle\Controller\RedirectHandlerInterface;
  10. use Sylius\Bundle\ResourceBundle\Controller\RequestConfigurationFactoryInterface;
  11. use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
  12. use Sylius\Bundle\ResourceBundle\Controller\ResourceDeleteHandlerInterface;
  13. use Sylius\Bundle\ResourceBundle\Controller\ResourceFormFactoryInterface;
  14. use Sylius\Bundle\ResourceBundle\Controller\ResourcesCollectionProviderInterface;
  15. use Sylius\Bundle\ResourceBundle\Controller\ResourceUpdateHandlerInterface;
  16. use Sylius\Bundle\ResourceBundle\Controller\SingleResourceProviderInterface;
  17. use Sylius\Bundle\ResourceBundle\Controller\StateMachineInterface;
  18. use Sylius\Bundle\ResourceBundle\Controller\ViewHandlerInterface;
  19. use Sylius\Component\Resource\Factory\FactoryInterface;
  20. use Sylius\Component\Resource\Metadata\MetadataInterface;
  21. use Sylius\Component\Resource\Repository\RepositoryInterface;
  22. use Sylius\Component\Resource\ResourceActions;
  23. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  24. use Symfony\Component\DependencyInjection\ContainerInterface;
  25. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  26. use Symfony\Component\Form\Extension\Core\Type\TextType;
  27. use Symfony\Component\Form\FormFactoryInterface;
  28. use Symfony\Component\HttpFoundation\RedirectResponse;
  29. use Symfony\Component\HttpFoundation\Request;
  30. use Symfony\Component\HttpFoundation\Response;
  31. use Symfony\Component\Routing\Exception\RouteNotFoundException;
  32. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  33. class MenuController extends ResourceController
  34. {
  35.     public function getMenuAction(Request $requestContainerInterface $container): Response
  36.     {
  37.         /**
  38.          * @var MenuItemRepository $repository
  39.          */
  40.         $repository $container->get('app.repository.menu_item');
  41.         $menuItems $repository->findItemsByChannel($container->get('sylius.context.channel')->getChannel(), TRUE);
  42.         return $this->render($request->get('template'), [
  43.             'items' => $menuItems,
  44.             'channel' => $container->get('sylius.context.channel')->getChannel()
  45.         ]);
  46.     }
  47.     public function generateUrlFromRouteAction(string $route, ?array $parameters = []): Response
  48.     {
  49.         $url '';
  50.         try {
  51.             $url $this->generateUrl($route$parameters);
  52.         }
  53.         catch (RouteNotFoundException $exception) {
  54.         }
  55.         return new Response($url);
  56.     }
  57.     /**
  58.      * @param FormFactoryInterface $formFactory
  59.      * @return Response
  60.      */
  61.     public function searchAction(FormFactoryInterface $formFactory): Response
  62.     {
  63.         $builder $formFactory->createNamedBuilder('app_product_search_form');
  64.         $builder
  65.             ->add('name'TextType::class, [
  66.                 'required' => TRUE,
  67.                 'label'    => FALSE,
  68.                 'attr'     => [
  69.                     'placeholder' => 'app.ui.search_placeholder'
  70.                 ]
  71.             ])
  72.             ->add('submit'SubmitType::class, [
  73.                 'label' => FALSE,
  74.                 'attr'  => [
  75.                     'icon'  => 'fa fa-search',
  76.                     'title' => 'sylius.ui.submit'
  77.                 ]
  78.             ])
  79.             ->setMethod('GET')
  80.             ->setAction($this->generateUrl('sylius_shop_product_search'));
  81.         $form $builder->getForm();
  82.         return $this->render('header/search.html.twig', [
  83.             'form' => $form->createView()
  84.         ]);
  85.     }
  86. }