質問 > フロント機能 > お問い合わせフォームをお問い合わせページ以外のページに設置する |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
toru1987 |
投稿日時: 2023/12/3 17:41
対応状況: 開発中
|
新米 登録日: 2023/9/12 居住地: 投稿: 4 |
お問い合わせフォームをお問い合わせページ以外のページに設置する いつもお世話になっております。
今回、通常のフォームとは別のページにお問い合わせフォームを設置し、送信までできるようにカスタマイズしたいのですが、過去の情報やネットで検索をかけても解決できなかったため、質問させていただきます。 [EC-CUBE]:4.2.1 [レンタルサーバ]:Xサーバー [OS]:Mac [PHP]:7.4.33 [データベース] MySQL 10.5.13-MariaDB-log [WEBサーバ] Apache [ブラウザ] Google Chrome [導入プラグインの有無]:有 ・EC-CUBEペイメントLite42 ・Coupon Plugin for EC-CUBE42 ・EC-CUBEペイメントLite42 [カスタマイズの有無]:有 ・トップページのコントローラーをカスタマイズし、商品情報をトップページでも変数で呼び出しができるようにしております。 [現象]:既存のContactType.phpとContactController.phpをコピーしてapp|Customizeに設置しておりますが、変数「form」をtwig ファイルにて参照できない エラー:Variable 'form' does not exist. 現状のコードはこのようになっております。 //LpController <?php namespace Customize\Controller; use Eccube\Entity\Customer; use Eccube\Event\EccubeEvents; use Eccube\Event\EventArgs; // use Eccube\Form\Type\Front\ContactType; use Eccube\Repository\PageRepository; use Eccube\Service\MailService; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Eccube\Controller\AbstractController; use Customize\Form\Type\Front\Contact2Type; // use Customize\Form\Extension\Front\ContactTypeExtension; class LpController extends AbstractController { /** * @var MailService */ protected $mailService; /** * @var PageRepository */ private $pageRepository; /** * ContactController constructor. * * @param MailService $mailService * @param PageRepository $pageRepository */ public function __construct( MailService $mailService, PageRepository $pageRepository) { $this->mailService = $mailService; $this->pageRepository = $pageRepository; } /** * お問い合わせ画面. * * @Route("/lp", name="lp", methods={"GET", "POST"}) * @Route("/lp", name="lp_confirm", methods={"GET", "POST"}) * */ // @Template("/%eccube_user_data_route%/lp.twig") public function index(Request $request) { $builder = $this->formFactory->createBuilder(Contact2Type::class); if ($this->isGranted('ROLE_USER')) { /** @var Customer $user */ $user = $this->getUser(); $builder->setData( [ 'products' => $user->getProducts(), 'kind' => $user->getKind(), 'name01' => $user->getName01(), 'name02' => $user->getName02(), 'postal_code' => $user->getPostalCode(), 'pref' => $user->getPref(), 'addr01' => $user->getAddr01(), 'addr02' => $user->getAddr02(), 'phone_number' => $user->getPhoneNumber(), 'email' => $user->getEmail(), ] ); } // FRONT_CONTACT_INDEX_INITIALIZE // $event = new EventArgs( // [ // 'builder' => $builder, // ], // $request // ); // $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE); $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { switch ($request->get('mode')) { case 'confirm': return $this->render('/%eccube_user_data_route%/lp-confirm.twig', [ 'form' => $form->createView(), 'Page' => $this->pageRepository->getPageByRoute('contact_confirm'), ]); case 'complete': $data = $form->getData(); $event = new EventArgs( [ 'form' => $form, 'data' => $data, ], $request ); // $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE); $data = $event->getArgument('data'); // メール送信 $this->mailService->sendContactMail($data); return $this->redirect($this->generateUrl('contact_complete')); } } return [ 'form' => $form->createView(), ]; } /** * お問い合わせ完了画面. * * @Route("/lp/complete", name="contact_complete", methods={"GET"}) * @Template("/%eccube_user_data_route%/lp-complete.twig") */ public function complete() { return []; } } //ここまで //ContactType <?php namespace Customize\Form\Type\Front; use Eccube\Common\EccubeConfig; use Eccube\Form\Type\AddressType; use Eccube\Form\Type\KanaType; use Eccube\Form\Type\NameType; use Eccube\Form\Type\PhoneNumberType; use Eccube\Form\Type\PostalType; use Eccube\Form\Validator\Email; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; // use Customize\Form\Extension\Front\ContactTypeExtension; class Contact2Type extends AbstractType { /** * @var EccubeConfig */ protected $eccubeConfig; /** * ContactType constructor. * * @param EccubeConfig $eccubeConfig */ public function __construct(EccubeConfig $eccubeConfig) { $this->eccubeConfig = $eccubeConfig; } /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('kinds', ChoiceType::class, array( 'choices' => [ '商品についてのお問い合わせ' => 'choice1', 'その他' => 'choice2', ], 'expanded' => true, )) ->add('products', ChoiceType::class, array( 'choices' => [ '牛タンと山形大沢豚のしゃぶしゃぶセット【6,000円(税込)】' => 'choice3', '国産A4~A5牛タンの鯛だししゃぶしゃぶ【7,500円(税込)】' => 'choice4', '福岡博多の味国産和牛の博多もつ鍋セット【5,000円(税込)】' => 'choice5', ], 'expanded' => true, 'multiple' => true, )) ->add('name', NameType::class, [ 'required' => true, ]) ->add('postal_code', PostalType::class, [ 'required' => false, ]) ->add('address', AddressType::class, [ 'required' => false, ]) ->add('email', EmailType::class, [ 'constraints' => [ new Assert\NotBlank(), new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null), ], ]) ->add('phone_number', PhoneNumberType::class, [ 'required' => false, ]) ->add('contents', TextareaType::class, [ 'constraints' => [ new Assert\NotBlank(), new Assert\Length([ 'max' => $this->eccubeConfig['eccube_lltext_len'], ]) ], ]); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'contact2'; } } //ここまで 拙いコードで申し訳ございません。 どなたかご教授いただくことはできませんでしょうか。 何卒宜しくお願いいたします。 |
shinra |
投稿日時: 2023/12/3 21:02
対応状況: −−−
|
一人前 登録日: 2017/9/2 居住地: 投稿: 133 |
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する 一旦記載の追加したcontrollerが使われているのかデバッグしてみてはいかがでしょうか
|
ゲスト |
投稿日時: 2023/12/3 21:53
対応状況: −−−
|
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する 分からないからって、コミュニティを自分のコードを他人に見せて原因探らせようとするフリーランスってどうなんやら。
単純に、自分のスキルがないだけやん。 スキルないフリーランス増えまくりで出来ない企業も困るわな。 自分で開発しようとするシステムくらい勉強しろや |
|
eccube_admin |
投稿日時: 2023/12/4 10:56
対応状況: −−−
|
管理人 登録日: 2006/9/6 居住地: 投稿: 157 |
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する 本コミュニティは各メンバーの善意により成り立っています。
初心者の方々、上級者の方々、全ての方々が気持ちの良いコミュニケーションができるよう投稿をお願いいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |