src/Mod/TopicsBundle/Controller/Display/ActionController.php line 17

Open in your IDE?
  1. <?php
  2. namespace Mod\TopicsBundle\Controller\Display;
  3. use AppBundle\Component\Util\Hash;
  4. use Mod\TopicsBundle\Service\BundleUtility;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  7. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use CustomBundle\Controller\CustomFacilityDisplayBaseController as FacilityDisplayBaseController;
  10. use Mod\TopicsBundle\PageForm\ItemForm;
  11. use Mod\TopicsBundle\Entity\Item;
  12. use Mod\TopicsBundle\Entity\Category;
  13. use Mod\TopicsBundle\Entity\Tag;
  14. class ActionController extends FacilityDisplayBaseController
  15. {
  16.     public $formClass ItemForm::class;
  17.     public $itemClass Item::class;
  18.     public $categoryClass Category::class;
  19.     public $tagClass Tag::class;
  20.     public $views = [
  21.         "index" => "topics/index.php",
  22.         "detail" => "topics/detail.php",
  23.     ];
  24.     
  25.     public $settings = [
  26.         "pageLimit" => 10,
  27.         "theme" => "topics",
  28.         "themeDirectory" => "CustomBundle:Default:page-builder/themes"
  29.     ];
  30.     public function before(FilterControllerEvent $event)
  31.     {
  32.         parent::before($event);
  33.         $this->default_setting $this->getDefaultParameter('mod_topics.default_settings');
  34.         $this->entity_setting $this->getDefaultParameter('mod_topics.entity_settings');
  35.         /** @var BundleUtility $util */
  36.         $util $this->get('mod_topics.bundle_utility');
  37.         if($this->entity_setting){
  38.             $multi_category Hash::get($this->entity_setting"item.multi_category"false);
  39.         } else {
  40.             $multi_category false;
  41.         }
  42.         if(isset($this->default_setting['list_limit'])){
  43.             $this->settings['pageLimit'] = $this->default_setting['list_limit'];
  44.         }
  45.         // 共通の変数
  46.         $this->view_params->set('cms__archives'$util->getArchiveList());
  47.         $this->view_params->set('cms__categories'$util->getCategoryList($multi_category));
  48.      }
  49.     /**
  50.      * @Route("/topics/", name="mod_topics_group_list")
  51.      */
  52.     public function groupListAction(Request $request)
  53.     {
  54.         return $this->facilityListAction($request'master');
  55.     }
  56.     /**
  57.      * @Route("/topics/{id}/", name="mod_topics_group_detail")
  58.      */
  59.     public function groupDetailAction(Request $request$id)
  60.     {
  61.         return $this->facilityDetailAction($request'master'$id);
  62.     }
  63.     /**
  64.      * @Route("/{facility}/topics/", name="mod_topics_facility_list")
  65.      */
  66.     public function facilityListAction(Request $request$facility)
  67.     {
  68.         /** @var BundleUtility $util */
  69.         $util $this->get('mod_topics.bundle_utility');
  70.         $repo $this->getDoctrine()->getRepository($this->itemClass);
  71.         $order = ['public_date' => 'DESC''post_id' => 'DESC'];
  72.         $page $request->query->getInt('page'1);
  73.         if($page 1){
  74.             $page 1;
  75.         }
  76.         $limit $this->settings['pageLimit'];
  77.         $paginator $util->searchItems($request->query->all(), $order$limit$page);
  78.         if(isset($this->default_setting['pagination']['page_range'])){
  79.             $paginator->setPageRange($this->default_setting['pagination']['page_range']);
  80.         }
  81.         $pagination $this->getPaginationParams($paginator);
  82.         $items $paginator->getItems();
  83.         $view str_replace('{facility}'$facility$this->views['index']);
  84.         return $this->renderFront($view, [
  85.             'cms__items' => $items,
  86.             'cms__pagination' => $pagination
  87.         ]);
  88.     }
  89.     /**
  90.      * @Route("/{facility}/topics/{id}/", name="mod_topics_facility_detail")
  91.      */
  92.     public function facilityDetailAction(Request $request$facility$id)
  93.     {
  94.         /** @var BundleUtility $util */
  95.         $util $this->get('mod_topics.bundle_utility');
  96.         $item $this->findItemBy($request$this->itemClass, ['post_id' => $id]);
  97.         if(!$item){
  98.             throw new NotFoundHttpException();
  99.         }
  100.         $page_builder $this->createPageBuilder($this->formClass$item);
  101.         $page_builder->setTheme($this->settings['theme']);
  102.         $page_builder->setThemeDirectory($this->settings['themeDirectory']);
  103.         $siblings $util->getItemSibLings($item);
  104.         $view str_replace('{facility}'$facility$this->views['detail']);
  105.         return $this->renderFront($view, [
  106.             'cms__item' => $item,
  107.             'cms__siblings' => $siblings,
  108.             'cms__page_builder' => $page_builder,
  109.         ]);
  110.     }
  111. }