バージョン選択

フォーラム

メニュー

オンライン状況

66 人のユーザが現在オンラインです。 (56 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 66
もっと...

サイト内検索

質問 > フロント機能 > お問い合わせフォームをお問い合わせページ以外のページに設置する

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地:
投稿: 124
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する
一旦記載の追加したcontrollerが使われているのかデバッグしてみてはいかがでしょうか
ゲスト
投稿日時: 2023/12/3 21:53
対応状況: −−−
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する
分からないからって、コミュニティを自分のコードを他人に見せて原因探らせようとするフリーランスってどうなんやら。
単純に、自分のスキルがないだけやん。
スキルないフリーランス増えまくりで出来ない企業も困るわな。

自分で開発しようとするシステムくらい勉強しろや
eccube_admin
投稿日時: 2023/12/4 10:56
対応状況: −−−
管理人
登録日: 2006/9/6
居住地:
投稿: 157
Re: お問い合わせフォームをお問い合わせページ以外のページに設置する
本コミュニティは各メンバーの善意により成り立っています。
初心者の方々、上級者の方々、全ての方々が気持ちの良いコミュニケーションができるよう投稿をお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,023名です
総投稿数は110,020件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.