src/Eccube/Controller/Admin/Setting/Shop/CalendarController.php line 51

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Eccube\Controller\Admin\Setting\Shop;
  13. use Eccube\Controller\AbstractController;
  14. use Eccube\Entity\Calendar;
  15. use Eccube\Form\Type\Admin\CalendarType;
  16. use Eccube\Repository\CalendarRepository;
  17. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. /**
  21.  * Class CalendarController
  22.  */
  23. class CalendarController extends AbstractController
  24. {
  25.     /**
  26.      * @var CalendarRepository
  27.      */
  28.     protected $calendarRepository;
  29.     /**
  30.      * CalendarController constructor.
  31.      *
  32.      *  @param CalendarRepository $calendarRepository
  33.      */
  34.     public function __construct(CalendarRepository $calendarRepository)
  35.     {
  36.         $this->calendarRepository $calendarRepository;
  37.     }
  38.     /**
  39.      * カレンダー設定の初期表示・登録
  40.      *
  41.      * @Route("/%eccube_admin_route%/setting/shop/calendar", name="admin_setting_shop_calendar", methods={"GET", "POST"})
  42.      * @Route("/%eccube_admin_route%/setting/shop/calendar/new", name="admin_setting_shop_calendar_new", methods={"GET", "POST"})
  43.      * @Template("@admin/Setting/Shop/calendar.twig")
  44.      */
  45.     public function index(Request $request)
  46.     {
  47.         $Calendar = new Calendar();
  48.         $builder $this->formFactory
  49.             ->createBuilder(CalendarType::class, $Calendar);
  50.         $form $builder->getForm();
  51.         $mode $request->get('mode');
  52.         if ($mode != 'edit_inline') {
  53.             $form->handleRequest($request);
  54.             if ($form->isSubmitted() && $form->isValid()) {
  55.                 $this->entityManager->persist($Calendar);
  56.                 $this->entityManager->flush();
  57.                 $this->addSuccess('admin.common.save_complete''admin');
  58.                 return $this->redirectToRoute('admin_setting_shop_calendar');
  59.             }
  60.         }
  61.         // カレンダーリスト取得
  62.         $Calendars $this->calendarRepository->getListOrderByIdDesc();
  63.         $forms = [];
  64.         $errors = [];
  65.         /** @var Calendar $Calendar */
  66.         foreach ($Calendars as $Calendar) {
  67.             $builder $this->formFactory->createBuilder(CalendarType::class, $Calendar);
  68.             $editCalendarForm $builder->getForm();
  69.             // error number
  70.             $error 0;
  71.             if ($mode == 'edit_inline'
  72.                 && $request->getMethod() === 'POST'
  73.                 && (string) $Calendar->getId() === $request->get('calendar_id')
  74.             ) {
  75.                 $editCalendarForm->handleRequest($request);
  76.                 if ($editCalendarForm->isValid()) {
  77.                     $calendarData $editCalendarForm->getData();
  78.                     $this->entityManager->persist($calendarData);
  79.                     $this->entityManager->flush();
  80.                     $this->addSuccess('admin.common.save_complete''admin');
  81.                     return $this->redirectToRoute('admin_setting_shop_calendar');
  82.                 }
  83.                 $error count($editCalendarForm->getErrors(true));
  84.             }
  85.             $forms[$Calendar->getId()] = $editCalendarForm->createView();
  86.             $errors[$Calendar->getId()] = $error;
  87.         }
  88.         return [
  89.             'Calendar' => $Calendar,
  90.             'Calendars' => $Calendars,
  91.             'form' => $form->createView(),
  92.             'forms' => $forms,
  93.             'errors' => $errors,
  94.         ];
  95.     }
  96.     /**
  97.      * カレンダー設定の削除
  98.      *
  99.      * @Route("/%eccube_admin_route%/setting/shop/calendar/{id}/delete", requirements={"id" = "\d+"}, name="admin_setting_shop_calendar_delete", methods={"DELETE"})
  100.      */
  101.     public function delete(Request $requestCalendar $Calendar)
  102.     {
  103.         $this->isTokenValid();
  104.         $this->calendarRepository->delete($Calendar);
  105.         $this->addSuccess('admin.common.delete_complete''admin');
  106.         return $this->redirectToRoute('admin_setting_shop_calendar');
  107.     }
  108. }