app/Plugin/ContactManagement42/Controller/Admin/ContactController.php line 114

Open in your IDE?
  1. <?php
  2. namespace Plugin\ContactManagement42\Controller\Admin;
  3. use Knp\Component\Pager\PaginatorInterface;
  4. use Plugin\ContactManagement42\Form\Type\Admin\SearchContactType;
  5. use Plugin\ContactManagement42\Repository\ContactRepository;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Eccube\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Eccube\Repository\Master\PageMaxRepository;
  11. use Eccube\Util\FormUtil;
  12. use Eccube\Repository\CustomerRepository;
  13. use Doctrine\ORM\QueryBuilder;
  14. /**
  15.  * Class ContactController
  16.  */
  17. class ContactController extends AbstractController
  18. {
  19.     /**
  20.      * @var PageMaxRepository
  21.      */
  22.     protected $pageMaxRepository;
  23.     /**
  24.      * @var ContactRepository
  25.      */
  26.     protected $contactRepository;
  27.     /**
  28.      * ContactController constructor.
  29.      *
  30.      * @param PageMaxRepository $pageMaxRepository
  31.      * @param CustomerRepository $customerRepository
  32.      */
  33.     public function __construct(
  34.         PageMaxRepository $pageMaxRepository,
  35.         ContactRepository $contactRepository
  36.     ) {
  37.         $this->pageMaxRepository $pageMaxRepository;
  38.         $this->contactRepository $contactRepository;
  39.     }
  40.     /**
  41.      * 配信内容設定検索画面を表示する.
  42.      * 左ナビゲーションの選択はGETで遷移する.
  43.      *
  44.      * @Route("/%eccube_admin_route%/contact", name="plugin_contact")
  45.      * @Route("/%eccube_admin_route%/contact/{page_no}", requirements={"page_no" = "\d+"}, name="plugin_contact_page")
  46.      * @Template("@ContactManagement42/admin/index.twig")
  47.      *
  48.      * @param Request $request
  49.      * @param PaginatorInterface $paginator
  50.      * @param integer $page_no
  51.      *
  52.      * @return \Symfony\Component\HttpFoundation\Response|array
  53.      */
  54.     public function index(Request $requestPaginatorInterface $paginator$page_no null)
  55.     {
  56.         $session $request->getSession();
  57.         $pageNo $page_no;
  58.         $pageMaxis $this->pageMaxRepository->findAll();
  59.         $pageCount $session->get('eccube.admin.contact.search.page_count'$this->eccubeConfig['eccube_default_page_count']);
  60.         $pageCountParam $request->get('page_count');
  61.         if ($pageCountParam && is_numeric($pageCountParam)) {
  62.             foreach ($pageMaxis as $pageMax) {
  63.                 if ($pageCountParam == $pageMax->getName()) {
  64.                     $pageCount $pageMax->getName();
  65.                     $session->set('eccube.admin.contact.search.page_count'$pageCount);
  66.                     break;
  67.                 }
  68.             }
  69.         }
  70.         $pageMax $this->eccubeConfig['eccube_default_page_count'];
  71.         $pagination null;
  72.         $searchForm $this->formFactory
  73.             ->createBuilder(SearchContactType::class)
  74.             ->getForm();
  75.         if ('POST' === $request->getMethod()) {
  76.             $searchForm->handleRequest($request);
  77.             if ($searchForm->isValid()) {
  78.                 $searchData $searchForm->getData();
  79.                 $pageNo 1;
  80.                 $session->set('eccube.admin.contact.search'FormUtil::getViewData($searchForm));
  81.                 $session->set('eccube.admin.contact.search.page_no'$pageNo);
  82.             } else {
  83.                 return [
  84.                     'searchForm' => $searchForm->createView(),
  85.                     'pagination' => [],
  86.                     'pageMaxis' => $pageMaxis,
  87.                     'page_no' => $pageNo $pageNo 1,
  88.                     'page_count' => $pageCount,
  89.                     'has_errors' => true,
  90.                 ];
  91.             }
  92.         } else {
  93.             if (null !== $pageNo || $request->get('resume')) {
  94.                 if ($pageNo) {
  95.                     $session->set('eccube.admin.contact.search.page_no', (int) $pageNo);
  96.                 } else {
  97.                     $pageNo $session->get('eccube.admin.contact.search.page_no'1);
  98.                 }
  99.                 $viewData $session->get('eccube.admin.contact.search', []);
  100.             } else {
  101.                 $pageNo 1;
  102.                 $viewData FormUtil::getViewData($searchForm);
  103.                 $session->set('eccube.admin.contact.search'$viewData);
  104.                 $session->set('eccube.admin.contact.search.page_no'$pageNo);
  105.             }
  106.             $searchData FormUtil::submitAndGetData($searchForm$viewData);
  107.         }
  108.         /** @var QueryBuilder $qb */
  109.         $qb $this->contactRepository->getQueryBuilderBySearchData($searchData);
  110.         $pagination $paginator->paginate(
  111.             $qb,
  112.             $pageNo,
  113.             $pageCount
  114.         );
  115.         return [
  116.             'searchForm' => $searchForm->createView(),
  117.             'pagination' => $pagination,
  118.             'pageMaxis' => $pageMaxis,
  119.             'page_count' => $pageCount,
  120.             'has_errors' => false,
  121.         ];
  122.     }
  123. }