app/Customize/Controller/InquiryController.php line 82

Open in your IDE?
  1. <?php
  2. namespace Customize\Controller;
  3. use Customize\Repository\CampaignRepository;
  4. use Customize\Repository\CouponRepository;
  5. use Customize\Repository\ProductRepository;
  6. use Customize\Repository\SeasonRepository;
  7. use Eccube\Repository\CategoryRepository;
  8. use Eccube\Repository\NewsRepository;
  9. use Eccube\Repository\TagRepository;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Eccube\Repository\PageRepository;
  16. use Eccube\Service\MailService;
  17. use Eccube\Event\EccubeEvents;
  18. use Eccube\Event\EventArgs;
  19. use Eccube\Form\Type\Front\ContactType;
  20. class InquiryController extends BaseController
  21. {
  22. /**
  23. * @var MailService
  24. */
  25. protected $mailService;
  26. /**
  27. * @var PageRepository
  28. */
  29. private $pageRepository;
  30. public function __construct(
  31. MailService $mailService,
  32. PageRepository $pageRepository
  33. ) {
  34. $this->mailService = $mailService;
  35. $this->pageRepository = $pageRepository;
  36. }
  37. /**
  38. * お問い合わせ画面.
  39. *
  40. * @Route("/inquiry", name="inquiry", methods={"GET", "POST"})
  41. * @Route("/inquiry", name="inquiry_confirm", methods={"GET", "POST"})
  42. * @Template("@user_data/inquiry/index.twig")
  43. */
  44. public function index(Request $request)
  45. {
  46. $builder = $this->formFactory->createBuilder(ContactType::class);
  47. if ($this->isGranted('ROLE_USER')) {
  48. /** @var Customer $user */
  49. $user = $this->getUser();
  50. $builder->setData(
  51. [
  52. 'name01' => $user->getName01(),
  53. 'name02' => $user->getName02(),
  54. 'kana01' => $user->getKana01(),
  55. 'kana02' => $user->getKana02(),
  56. 'postal_code' => $user->getPostalCode(),
  57. 'pref' => $user->getPref(),
  58. 'addr01' => $user->getAddr01(),
  59. 'addr02' => $user->getAddr02(),
  60. 'phone_number' => $user->getPhoneNumber(),
  61. 'email' => $user->getEmail(),
  62. ]
  63. );
  64. }
  65. // FRONT_CONTACT_INDEX_INITIALIZE
  66. $event = new EventArgs(
  67. [
  68. 'builder' => $builder,
  69. ],
  70. $request
  71. );
  72. $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE);
  73. $form = $builder->getForm();
  74. $form->handleRequest($request);
  75. if ($form->isSubmitted() && $form->isValid()) {
  76. switch ($request->get('mode')) {
  77. case 'confirm':
  78. return $this->render('@user_data/inquiry/confirm.twig', [
  79. 'form' => $form->createView(),
  80. 'Page' => $this->pageRepository->getPageByRoute('contact_confirm'),
  81. ]);
  82. case 'complete':
  83. $data = $form->getData();
  84. $event = new EventArgs(
  85. [
  86. 'form' => $form,
  87. 'data' => $data,
  88. ],
  89. $request
  90. );
  91. $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE);
  92. $data = $event->getArgument('data');
  93. // メール送信
  94. $this->mailService->sendContactMail($data);
  95. return $this->redirect($this->generateUrl('inquiry_complete'));
  96. }
  97. }
  98. return [
  99. 'form' => $form->createView(),
  100. ];
  101. }
  102. /**
  103. * お問い合わせ完了画面.
  104. *
  105. * @Route("/inquiry/complete", name="inquiry_complete", methods={"GET"})
  106. * @Template("@user_data/inquiry/complete.twig")
  107. */
  108. public function complete()
  109. {
  110. return [];
  111. }
  112. }