<?php
namespace Customize\Controller;
use Customize\Repository\CategoryRepository;
use Eccube\Controller\AbstractController;
use Eccube\Form\Type\SearchProductType;
use Knp\Component\Pager\PaginatorInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class CategoryController extends AbstractController
{
/**
* @var CategoryRepository
*/
protected $categoryRepository;
/**
* CategoryController constructor.
*
* @param CategoryRepository $categoryRepository
*/
public function __construct(
CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
/**
* @Route("/products/category", name="product_category", methods={"GET"})
* @Template("Product/category.twig")
*/
public function index(Request $request, PaginatorInterface $paginator)
{
if ($request->getMethod() === 'GET') {
$request->query->set('pageno', $request->query->get('pageno', ''));
}
$builder = $this->formFactory->createNamedBuilder('', SearchProductType::class);
if ($request->getMethod() === 'GET') {
$builder->setMethod('GET');
}
$searchForm = $builder->getForm();
$searchForm->handleRequest($request);
$searchData = $searchForm->getData();
$query = $this->categoryRepository->getSearchData($searchData);
$pagination = $paginator->paginate(
$query,
!empty($searchData['pageno']) ? $searchData['pageno'] : 1,
!empty($searchData['disp_number']) ? $searchData['disp_number']->getId() : $this->productListMaxRepository->findOneBy([], ['sort_no' => 'ASC'])->getId()
);
return [
'pagination' => $pagination,
'search_form' => $searchForm->createView(),
];
}
}