src/Controller/Mvc/modelplanController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Mvc;
  3. use App\Service\Entry\FrontService;
  4. use App\Utils\TargetChoiceUtil;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. /**
  11.  * @Route("/modelplan")
  12.  */
  13. class modelplanController extends AbstractController
  14. {
  15.     /**
  16.      * @Route ("/", name="modelplan_index", methods={"GET"})
  17.      */
  18.     public function index(
  19.         Request $request,
  20.         FrontService $service
  21.     ) {
  22.         $service
  23.             ->setType(TargetChoiceUtil::MODELPLAN)
  24.             ->setLocale($request->getLocale())
  25.         ;
  26.         $filter $service->getFilter();
  27.         $criteria $service->getCriteriaFromRequest($request);
  28.         $filter $service->handleRequest($filter$criteria);
  29.         $qb $service->getQueryBuilderForList();
  30.         $service->addDqlWhere($qb$filter);
  31.         $qb->orderBy("RAND()");
  32.         $criteria['limit'] = 9999// 一旦1ページを9999に設定
  33.         $paginate $service->handleList($qb$criteria);
  34.         $query $service->createQueryFromFilter($filter);
  35.         $query4area $query;
  36.         unset($query4area['area']);
  37.         return $this->render('pages/modelplan/index.html.twig', [
  38.             "paginate" => $paginate,
  39.             "data" => $paginate->getPaginator()->getIterator(),
  40.             "filter" => $filter,
  41.             "query" => $query,
  42.             "query4area" => $query4area
  43.         ]);
  44.     }
  45.     /**
  46.      * @Route ("/filter", name="modelplan_filter", methods={"GET"})
  47.      */
  48.     public function filter(
  49.         Request $request,
  50.         FrontService $service
  51.     ) {
  52.         $service
  53.             ->setType(TargetChoiceUtil::MODELPLAN)
  54.             ->setLocale($request->getLocale())
  55.         ;
  56.         $filter $service->getFilter();
  57.         $criteria $service->getCriteriaFromRequest($request);
  58.         $filter $service->handleRequest($filter$criteria);
  59.         $query $service->createQueryFromFilter($filter);
  60.         return $this->render('pages/modelplan/filter.html.twig', [
  61.             "filter" => $filter,
  62.             "query" => $query
  63.         ]);
  64.     }
  65.     /**
  66.      * @Route("/{id}", name="modelplan_detail", methods={"GET"}, requirements={"id" = "\d+"})
  67.      */
  68.     public function detail(
  69.         Request $request,
  70.         FrontService $service,
  71.         int $id
  72.     ) {
  73.         $service
  74.             ->setType(TargetChoiceUtil::MODELPLAN)
  75.             ->setLocale($request->getLocale())
  76.         ;
  77.         $entry $service->getOneEntry($id);
  78.         if(!$entry) {
  79.             throw new NotFoundHttpException('Entry not found.');
  80.         }
  81.         $filter $service->getFilter();
  82.         $criteria $service->getCriteriaFromSession($request);
  83.         $filter $service->handleRequest($filter$criteria);
  84.         $query $service->createQueryFromFilter($filter);
  85.         return $this->render('pages/modelplan/detail.html.twig', [
  86.             "entry" => $entry,
  87.             "query" => $query,
  88.             "recommend" => $service->getRelatedEntry($entry)
  89.         ]);
  90.     }
  91.     /**
  92.      * @Route("/recommend", name="modelplan_recommend", methods={"GET"})
  93.      */
  94.     public function recommend(
  95.         Request $request,
  96.         FrontService $service
  97.     ): Response {
  98.         $limit $request->query->has('limit')? intval($request->query->get('limit')) : 6;
  99.         return $this->render('pages/modelplan/recommend.html.twig', [
  100.             "data" => $service->getRecommends($limit)
  101.         ]);
  102.     }
  103. }