app/Customize/Controller/Block/ZenFeatureListController.php line 49

Open in your IDE?
  1. <?php
  2. namespace Customize\Controller\Block;
  3. use Eccube\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  9. use Knp\Component\Pager\PaginatorInterface;
  10. class ZenFeatureListController extends AbstractController
  11. {
  12.     /**
  13.      * @var EntityManagerInterface
  14.      */
  15.     protected $entityManager;
  16.     public function __construct(EntityManagerInterface $entityManager)
  17.     {
  18.         $this->entityManager $entityManager;
  19.     }
  20.     /**
  21.      * @Route("/block/zen_feature_list", name="block_zen_feature_list")
  22.      * @Template("user_data/zen_feature_list.twig")
  23.      */
  24.     public function index(Request $requestSessionInterface $sessionPaginatorInterface $paginator)
  25.     {
  26.         // SQLで全件取得(LIMITなし)
  27.         $connection $this->entityManager->getConnection();
  28.         $sql 'SELECT * FROM `blb_features` WHERE `view`=1  ORDER BY `order`';
  29.         $stmt $connection->prepare($sql);
  30.         $result $stmt->executeQuery();
  31.         // $newsListAll = $result->fetchAllAssociative();
  32.         $newsListAll array_values($result->fetchAllAssociative());
  33.         // dump('KF001:' . count($newsListAll));
  34.         // 画像パスを追加
  35.         foreach ($newsListAll as &$news) {
  36.             $news['image'] = file_exists('up_images/features/' $news['id'] . '/1.jpg')
  37.                 ? '../up_images/features/' $news['id'] . '/1.jpg'
  38.                 '';
  39.         }
  40.         // paginate()で分割(ここが要)
  41.         $page $session->get('blb_page2'1);
  42.         if ($page ceil(count($newsListAll) / 12)) {
  43.             $page ceil(count($newsListAll) / 12);
  44.         } 
  45.         $pagination $paginator->paginate(
  46.             $newsListAll,
  47.             $page,
  48.             12
  49.         );
  50.         // ページ情報を別にまとめる(Paginatorオブジェクトに直接プロパティを追加しない)
  51.         $pageInfo = [
  52.             'pageCount' => (int) ceil(count($newsListAll) / 12),
  53.             'currentPageNumber' => $page,
  54.             'previousPageNumber' => ($page 1) ? $page null,
  55.             'nextPageNumber' => ($page ceil(count($newsListAll) / 12)) ? $page null,
  56.             'pagesInRange' => range(1, (int) ceil(count($newsListAll) / 12)),
  57.         ];
  58.         return $this->render('Block/zen_feature_list.twig', [
  59.             'NewsItems' => $pagination->getItems(),  // 実データのみ
  60.             'PageInfo' => $pageInfo,
  61.         ]);
  62.     }
  63. }