<?php
namespace App\Controller;
use App\Repository\MenuItemRepository;
use Doctrine\Persistence\ObjectManager;
use Sylius\Bundle\ResourceBundle\Controller\AuthorizationCheckerInterface;
use Sylius\Bundle\ResourceBundle\Controller\EventDispatcherInterface;
use Sylius\Bundle\ResourceBundle\Controller\FlashHelperInterface;
use Sylius\Bundle\ResourceBundle\Controller\NewResourceFactoryInterface;
use Sylius\Bundle\ResourceBundle\Controller\RedirectHandlerInterface;
use Sylius\Bundle\ResourceBundle\Controller\RequestConfigurationFactoryInterface;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Sylius\Bundle\ResourceBundle\Controller\ResourceDeleteHandlerInterface;
use Sylius\Bundle\ResourceBundle\Controller\ResourceFormFactoryInterface;
use Sylius\Bundle\ResourceBundle\Controller\ResourcesCollectionProviderInterface;
use Sylius\Bundle\ResourceBundle\Controller\ResourceUpdateHandlerInterface;
use Sylius\Bundle\ResourceBundle\Controller\SingleResourceProviderInterface;
use Sylius\Bundle\ResourceBundle\Controller\StateMachineInterface;
use Sylius\Bundle\ResourceBundle\Controller\ViewHandlerInterface;
use Sylius\Component\Resource\Factory\FactoryInterface;
use Sylius\Component\Resource\Metadata\MetadataInterface;
use Sylius\Component\Resource\Repository\RepositoryInterface;
use Sylius\Component\Resource\ResourceActions;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class MenuController extends ResourceController
{
public function getMenuAction(Request $request, ContainerInterface $container): Response
{
/**
* @var MenuItemRepository $repository
*/
$repository = $container->get('app.repository.menu_item');
$menuItems = $repository->findItemsByChannel($container->get('sylius.context.channel')->getChannel(), TRUE);
return $this->render($request->get('template'), [
'items' => $menuItems,
'channel' => $container->get('sylius.context.channel')->getChannel()
]);
}
public function generateUrlFromRouteAction(string $route, ?array $parameters = []): Response
{
$url = '';
try {
$url = $this->generateUrl($route, $parameters);
}
catch (RouteNotFoundException $exception) {
}
return new Response($url);
}
/**
* @param FormFactoryInterface $formFactory
* @return Response
*/
public function searchAction(FormFactoryInterface $formFactory): Response
{
$builder = $formFactory->createNamedBuilder('app_product_search_form');
$builder
->add('name', TextType::class, [
'required' => TRUE,
'label' => FALSE,
'attr' => [
'placeholder' => 'app.ui.search_placeholder'
]
])
->add('submit', SubmitType::class, [
'label' => FALSE,
'attr' => [
'icon' => 'fa fa-search',
'title' => 'sylius.ui.submit'
]
])
->setMethod('GET')
->setAction($this->generateUrl('sylius_shop_product_search'));
$form = $builder->getForm();
return $this->render('header/search.html.twig', [
'form' => $form->createView()
]);
}
}