app/Customize/Controller/Block/ZenNewsListController.php line 13

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 ZenNewsListController 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_news_list", name="block_zen_news_list")
  22.      * @Template("user_data/zen_news_list.twig")
  23.      */
  24.     public function index(Request $requestSessionInterface $sessionPaginatorInterface $paginator)
  25.     {
  26.         $id $session->get('blb_id''0');
  27.         $w '';
  28.         $category '全ての記事';
  29.         if ($id == 1) {
  30.             $w 'AND `category`="お知らせ"';
  31.             $category 'お知らせ';
  32.         } elseif ($id == 2) {
  33.             $w 'AND `category`="商品情報"';
  34.             $category '商品情報';
  35.         }
  36.         // SQLで全件取得(LIMITなし)
  37.         $connection $this->entityManager->getConnection();
  38.         $sql 'SELECT * FROM `blb_information` WHERE `view`=1 ' $w ' ORDER BY `s_date` DESC';
  39.         $stmt $connection->prepare($sql);
  40.         $result $stmt->executeQuery();
  41.         // $newsListAll = $result->fetchAllAssociative();
  42.         $newsListAll array_values($result->fetchAllAssociative());
  43.         // dump('KF001:' . count($newsListAll));
  44.         // 画像パスを追加
  45.         foreach ($newsListAll as &$news) {
  46.             $news['image'] = file_exists('up_images/news/' $news['id'] . '/1.jpg')
  47.                 ? '../up_images/news/' $news['id'] . '/1.jpg'
  48.                 '';
  49.         }
  50.         // paginate()で分割(ここが要)
  51.         $page $session->get('blb_page'1);
  52.         if ($page ceil(count($newsListAll) / 12)) {
  53.             $page ceil(count($newsListAll) / 12);
  54.         } 
  55.         $pagination $paginator->paginate(
  56.             $newsListAll,
  57.             $page,
  58.             12
  59.         );
  60.         // ページ情報を別にまとめる(Paginatorオブジェクトに直接プロパティを追加しない)
  61.         $pageInfo = [
  62.             'pageCount' => (int) ceil(count($newsListAll) / 12),
  63.             'currentPageNumber' => $page,
  64.             'previousPageNumber' => ($page 1) ? $page null,
  65.             'nextPageNumber' => ($page ceil(count($newsListAll) / 12)) ? $page null,
  66.             'pagesInRange' => range(1, (int) ceil(count($newsListAll) / 12)),
  67.         ];
  68.         return $this->render('Block/zen_news_list.twig', [
  69.             'Category' => $category,
  70.             'NewsItems' => $pagination->getItems(),  // 実データのみ
  71.             'PageInfo' => $pageInfo,
  72.         ]);
  73.     }
  74. }