<?php
declare(strict_types=1);
namespace App\Controller;
use Exception;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Sylius\Component\Resource\ResourceActions;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ProductController extends ResourceController
{
public function searchAction(Request $request): Response
{
try {
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$resources = $this->resourcesCollectionProvider->get($configuration, $this->repository);
}
catch (Exception $exception) {
throw $this->createNotFoundException();
}
$this->isGrantedOr403($configuration, "search");
if ($configuration->isHtmlRequest()) {
return $this->render($configuration->getTemplate('product/search.html'), [
'configuration' => $configuration,
'metadata' => $this->metadata,
'resources' => $resources,
$this->metadata->getPluralName() => $resources,
]);
}
throw $this->createNotFoundException();
}
public function indexAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$this->isGrantedOr403($configuration, ResourceActions::INDEX);
$resources = $this->resourcesCollectionProvider->get($configuration, $this->repository);
$this->eventDispatcher->dispatchMultiple(ResourceActions::INDEX, $configuration, $resources);
if ($configuration->isHtmlRequest()) {
return $this->render($configuration->getTemplate(ResourceActions::INDEX . '.html'), [
'configuration' => $configuration,
'metadata' => $this->metadata,
'resources' => $resources,
$this->metadata->getPluralName() => $resources,
]);
}
return $this->createRestView($configuration, $resources);
}
}