app/Plugin/Blogs42/Controller/BlogsController.php line 101

Open in your IDE?
  1. <?php
  2. namespace Plugin\Blogs42\Controller;
  3. use Eccube\Controller\AbstractController;
  4. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Doctrine\Common\Collections\Criteria;
  10. use Eccube\Event\EccubeEvents;
  11. use Eccube\Event\EventArgs;
  12. use Plugin\Blogs42\Entity\Blogs;
  13. use Plugin\Blogs42\Repository\BlogsRepository;
  14. use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  17. use Plugin\Blogs42\Form\Type\SearchBlogsType;
  18. /**
  19.  * Class CampaignController.
  20.  */
  21. class BlogsController extends AbstractController
  22. {
  23.    /**
  24.      * @var BlogsRepository
  25.      */
  26.     protected $blogsRepository;
  27.     /**
  28.      * BlogsController constructor.
  29.      *
  30.      * @param BlogsRepository $blogsRepository
  31.      */
  32.     public function __construct(BlogsRepository $blogsRepository)
  33.     {
  34.         $this->blogsRepository $blogsRepository;
  35.     }
  36.     /**
  37.      * お知らせ一覧画面.
  38.      *
  39.      * @Route("/blogs/list", name="blogs42_list", methods={"GET"})
  40.      * @Template("Blogs42/list.twig")
  41.      */
  42.     public function index(Request $requestPaginatorInterface $paginator)
  43.     {
  44.         // handleRequestは空のqueryの場合は無視するため
  45.         if ($request->getMethod() === 'GET') {
  46.             $request->query->set('pageno'$request->query->get('pageno'''));
  47.         }
  48.         // searchForm
  49.         /* @var $builder \Symfony\Component\Form\FormBuilderInterface */
  50.         $builder $this->formFactory->createNamedBuilder(''SearchBlogsType::class);
  51.         if ($request->getMethod() === 'GET') {
  52.             $builder->setMethod('GET');
  53.         }
  54.         /* @var $searchForm \Symfony\Component\Form\FormInterface */
  55.         $searchForm $builder->getForm();
  56.         $searchForm->handleRequest($request);
  57.         // paginator
  58.         $searchData $searchForm->getData();
  59.         $qb $this->blogsRepository->getQueryBuilderBySearchData($searchData);
  60.         $query $qb->getQuery()
  61.             ->useResultCache(true$this->eccubeConfig['eccube_result_cache_lifetime_short']);
  62.         /** @var SlidingPagination $pagination */
  63.         $pagination $paginator->paginate(
  64.             $query,
  65.             !empty($searchData['pageno']) ? $searchData['pageno'] : 1,
  66.             !empty($searchData['disp_number']) ? $searchData['disp_number']->getId() : $this->productListMaxRepository->findOneBy([], ['sort_no' => 'ASC'])->getId()
  67.         );
  68.         $Category $searchForm->get('blogs_category_id')->getData();
  69.         return [
  70.             'search_form' => $searchForm->createView(),
  71.             'pagination' => $pagination,
  72.             'Category' => $Category,
  73.         ];
  74.     }
  75.     /**
  76.      * お知らせ詳細画面.
  77.      *
  78.      * @Route("/blogs/detail/{id}", name="blogs42_detail", requirements={"id":"\d+"})
  79.      * @Template("Blogs42/detail.twig")
  80.      */
  81.     public function Detail(Request $request$id=null)
  82.     {
  83.         $Blogs $this->blogsRepository->find($id);
  84.         $today = new \DateTime();
  85.         $is_admin $this->session->has('_security_admin');
  86.         if (!$is_admin) {
  87.             //404設定 記事の存在、公開、公開日
  88.             if(!$Blogs || $Blogs->isVisible() == false || $Blogs['publish_date'] > $today){
  89.                 throw new NotFoundHttpException();
  90.             }
  91.         }else{
  92.             if(!$Blogs){
  93.                 throw new NotFoundHttpException();
  94.             }
  95.         }
  96.         return [
  97.             'Blogs' => $Blogs,
  98.         ];
  99.     }
  100. }