app/Plugin/Maker42/Controller/MakerController.php line 59

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 Plugin\Maker42\Controller;
  13. use Eccube\Controller\AbstractController;
  14. use Plugin\Maker42\Entity\Maker;
  15. use Plugin\Maker42\Form\Type\MakerType;
  16. use Plugin\Maker42\Repository\MakerRepository;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. /**
  22.  * Class MakerController.
  23.  */
  24. class MakerController extends AbstractController
  25. {
  26.     /**
  27.      * @var MakerRepository
  28.      */
  29.     protected $makerRepository;
  30.     /**
  31.      * MakerController constructor.
  32.      *
  33.      * @param MakerRepository $makerRepository
  34.      */
  35.     public function __construct(MakerRepository $makerRepository)
  36.     {
  37.         $this->makerRepository $makerRepository;
  38.     }
  39.     /**
  40.      * List, add, edit maker.
  41.      *
  42.      * @param Request $request
  43.      *
  44.      * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
  45.      *
  46.      * @throws \Doctrine\ORM\NoResultException
  47.      * @throws \Doctrine\ORM\NonUniqueResultException
  48.      * @throws \Doctrine\ORM\OptimisticLockException
  49.      *
  50.      * @Route("/%eccube_admin_route%/maker", name="maker_admin_index")
  51.      * @Template("@Maker42/admin/maker.twig")
  52.      */
  53.     public function index(Request $request)
  54.     {
  55.         $Maker = new Maker();
  56.         $Makers $this->makerRepository->findBy([], ['sort_no' => 'DESC']);
  57.         /**
  58.          * 新規登録フォーム
  59.          */
  60.         $builder $this->formFactory->createBuilder(MakerType::class, $Maker);
  61.         $form $builder->getForm();
  62.         /**
  63.          * 編集用フォーム
  64.          */
  65.         $forms = [];
  66.         foreach ($Makers as $item) {
  67.             $id $item->getId();
  68.             $forms[$id] = $this->formFactory->createNamed('maker_'.$idMakerType::class, $item);
  69.         }
  70.         if ('POST' === $request->getMethod()) {
  71.             /*
  72.              * 登録処理
  73.              */
  74.             $form->handleRequest($request);
  75.             if ($form->isSubmitted() && $form->isValid()) {
  76.                 $this->makerRepository->save($form->getData());
  77.                 $this->addSuccess('maker.admin.save.complete''admin');
  78.                 return $this->redirectToRoute('maker_admin_index');
  79.             }
  80.             /*
  81.              * 編集処理
  82.              */
  83.             foreach ($forms as $editForm) {
  84.                 $editForm->handleRequest($request);
  85.                 if ($editForm->isSubmitted() && $editForm->isValid()) {
  86.                     $this->makerRepository->save($editForm->getData());
  87.                     $this->addSuccess('maker.admin.save.complete''admin');
  88.                     return $this->redirectToRoute('maker_admin_index');
  89.                 }
  90.             }
  91.         }
  92.         $formViews = [];
  93.         foreach ($forms as $key => $value) {
  94.             $formViews[$key] = $value->createView();
  95.         }
  96.         return [
  97.             'form' => $form->createView(),
  98.             'Makers' => $Makers,
  99.             'Maker' => $Maker,
  100.             'forms' => $formViews,
  101.         ];
  102.     }
  103.     /**
  104.      * Delete Maker.
  105.      *
  106.      * @param Request $request
  107.      * @param Maker $Maker
  108.      *
  109.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  110.      *
  111.      * @Route(
  112.      *     "/%eccube_admin_route%/maker/{id}/delete",
  113.      *     name="maker_admin_delete", requirements={"id":"\d+"},
  114.      *     methods={"DELETE"}
  115.      * )
  116.      */
  117.     public function delete(Request $requestMaker $Maker)
  118.     {
  119.         $this->isTokenValid();
  120.         try {
  121.             $this->makerRepository->delete($Maker);
  122.             $this->addSuccess('maker.admin.delete.complete''admin');
  123.             log_info('メーカー削除完了', ['Maker id' => $Maker->getId()]);
  124.         } catch (\Exception $e) {
  125.             log_info('メーカー削除エラー', ['Maker id' => $Maker->getId(), $e]);
  126.             $message trans('admin.common.delete_error_foreign_key', ['%name%' => $Maker->getName()]);
  127.             $this->addError($message'admin');
  128.         }
  129.         return $this->redirectToRoute('maker_admin_index');
  130.     }
  131.     /**
  132.      * Move sort no with ajax.
  133.      *
  134.      * @param Request $request
  135.      *
  136.      * @return Response
  137.      *
  138.      * @throws \Exception
  139.      *
  140.      * @Route(
  141.      *     "/%eccube_admin_route%/maker/move_sort_no",
  142.      *     name="maker_admin_move_sort_no",
  143.      *     methods={"POST"}
  144.      * )
  145.      */
  146.     public function moveSortNo(Request $request)
  147.     {
  148.         if ($request->isXmlHttpRequest() && $this->isTokenValid()) {
  149.             $sortNos $request->request->all();
  150.             foreach ($sortNos as $makerId => $sortNo) {
  151.                 $Maker $this->makerRepository->find($makerId);
  152.                 $Maker->setSortNo($sortNo);
  153.                 $this->entityManager->persist($Maker);
  154.             }
  155.             $this->entityManager->flush();
  156.         }
  157.         return new Response();
  158.     }
  159. }