<?php
namespace Plugin\Topics42\Controller;
use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Eccube\Entity\News;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Plugin\Topics42\Repository\TopicsRepository;
use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class CampaignController.
*/
class TopicsController extends AbstractController
{
/**
* @var TopicsRepository
*/
protected $topicsRepository;
/**
* NewsController constructor.
*
* @param TopicsRepository $topicsRepository
*/
public function __construct(TopicsRepository $topicsRepository)
{
$this->topicsRepository = $topicsRepository;
}
/**
* お知らせ一覧画面.
*
* @Route("/topics", name="topics42_index", methods={"GET"})
* @Template("Topics42/index.twig")
*/
public function Topics(Request $request, PaginatorInterface $paginator)
{
// handleRequestは空のqueryの場合は無視するため
if ($request->getMethod() === 'GET') {
$request->query->set('pageno', $request->query->get('pageno', ''));
}
$qb = $this->topicsRepository->getDispNewsAll();
/** @var SlidingPagination $pagination */
$pagination = $paginator->paginate(
$qb,
!empty($request->query->get('pageno')) ? $request->query->get('pageno') : 1,
);
return [
'pagination' => $pagination,
];
}
/**
* お知らせ詳細画面.
*
* @Route("/topics/detail/{id}", name="topics42_detail", requirements={"id":"\d+"})
* @Template("Topics42/detail.twig")
*/
public function Detail(Request $request, $id=null)
{
$News = $this->topicsRepository->find($id);
//404設定
if(!$News || $News->isVisible() == false){
throw new NotFoundHttpException();
}
return [
'news' => $News,
];
}
}