バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お問い合わせフォームに項目を追加したい(4系)

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mrkm
投稿日時: 2019/10/9 18:12
対応状況: −−−
新米
登録日: 2019/10/9
居住地:
投稿: 4
お問い合わせフォームに項目を追加したい(4系)
[EC-CUBE] 4.0.2
[レンタルサーバ] Xserver
[PHP] 7.1.28
[データベース] MySQL 5.7.27
[導入プラグインの有無] 多数有
[カスタマイズの有無] 多数有

[現象]
お問い合わせフォームに、項目を追加したいと考えております。
以下の内容でセレクトボックスまたはラジオボタンを追加したいのですが、編集する箇所等がわかりません。
大変恐縮ですがご教授いただければ幸いです。

------------------------
お問い合わせ内容
・商品について
・メルマガについて
・支払い方法について
・ご注文内容について
・その他
------------------------
h_tanaka
投稿日時: 2019/10/10 9:54
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: お問い合わせフォームに項目を追加したい(4系)
こんな感じでしょうか。
実際に動かしてみてはいないので試してみてください。

src/Eccube/Form/Type/Front/ContactType.php

・ラジオボタン
$builder
->add('how', ChoiceType::class, [
    'choices'  => [
        '商品について' => 0,
    ],
    'required' => true,
    'multiple' => false,
    'expanded' => true,
    'mapped' => false,
    'constraints' => [
        new Assert\NotBlank(),
    ],
])


・セレクトボックス
$Selection = [0 => '商品について'];
$builder
->add('how', ChoiceType::class, [
    'required' => true,
    'choices' => $Selection,
    'multiple' => false,
    'expanded' => false,
    'mapped' => false,
    'placeholder' => 'admin.common.select',
    'constraints' => [
        new Assert\NotBlank(),
    ],
])


Contact/index.twig
Contact/confirm.twig
の変更もお忘れなく。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

mrkm
投稿日時: 2019/10/10 11:36
対応状況: −−−
新米
登録日: 2019/10/9
居住地:
投稿: 4
Re: お問い合わせフォームに項目を追加したい(4系)
ご返答ありがとうございます。

該当のコードを差し込んだところ、システムエラーになってしまいました。
念の為確認ですが、既にある $builder の中にご教示いただいたコードをひとまずそのまま差し込む形にしていますが、お間違い無いでしょうか。
('contents'より上のものは省略しています)

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('contents', TextareaType::class, [
                'constraints' => [
                    new Assert\NotBlank(),
                ],
            ])
            ->add('how', ChoiceType::class, [
                'choices'  => [
                    '商品について' => 0,
                ],
                'required' => true,
                'multiple' => false,
                'expanded' => true,
                'mapped' => false,
                'constraints' => [
                    new Assert\NotBlank(),
                ],
            ]);
    }


------------------------
▼エラーログにはこちらが残っていました。
[2019-10-10 10:29:09] front.ERROR [7b7d1008da58974e4037a893ee983d22] [e06b199] [anon.] [Eccube\Log\Logger:log:66] - システムエラーが発生しました。 ["Could not load type \"Eccube\\Form\\Type\\Front\\ChoiceType\": class does not exist.","/home/xxxx/xxxx.jp/public_html/vendor/symfony/form/FormRegistry.php",86,"#0 /home/xxxx/xxxx.jp/public_html/vendor/symfony/form/FormFactory.php(74): Symfony\\Component\\Form\\FormRegistry->getType('Eccube\\\\Form\\\\Typ...')\n#1 /home/xxxx/xxxx.jp/public_html/vendor/symfony/form/FormBuilder.php(106): Symfony\\Component\\Form\\FormFactory->createNamedBuilder('how', 'Eccube\\\\Form\\\\Typ...', NULL, Array)\n#2 /home/xxxx/xxxx.jp/public_html/vendor/symfony/form/FormBuilder.php(269): Symfony\\Component\\Form\\FormBuilder->create('how', 'Eccube\\\\Form\\\\Typ...', Array)\n#3 /home/xxxx/xxxx.jp/public_html/vendor/symfony/form/FormBuilder.php(215): Symfony\\Component\\Form\\FormBuilder->resolveChildren()\n#4 /home/xxxx/xxxx.jp/public_html/src/Eccube/Controller/ContactController.php(81): Symfony\\Component\\Form\\FormBuilder->getForm()\n#5 /home/xxxx/xxxx.jp/public_html/vendor/symfony/http-kernel/HttpKernel.php(151): Eccube\\Controller\\ContactController->index(Object(Symfony\\Component\\HttpFoundation\\Request))\n#6 /home/xxxx/xxxx.jp/public_html/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#7 /home/xxxx/xxxx.jp/public_html/vendor/symfony/http-kernel/Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#8 /home/xxxx/xxxx.jp/public_html/index.php(74): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#9 {main}"] [GET, /contact, 125.199.240.94, https://www.xxxx.jp/, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36]
h_tanaka
投稿日時: 2019/10/10 11:38
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: お問い合わせフォームに項目を追加したい(4系)
クラスに次を追加してください。

use Symfony\Component\Form\Extension\Core\Type\ChoiceType;


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

mrkm
投稿日時: 2019/10/10 13:09
対応状況: −−−
新米
登録日: 2019/10/9
居住地:
投稿: 4
Re: お問い合わせフォームに項目を追加したい(4系)
ありがとうございます!
クラスに追加することでシステムエラーはなくなりました。

Mail/contact_mail.html.twig
Mail/contact_mail.twig
ただ、お問い合わせ送信後に送られてくる自動送信メール用にこちらにも追加しようと思いましたが、
以下の文では取得をすることができませんでした。
こちらの対応も可能でしょうか?

お問い合わせ項目:{{ data.how }}


ちなみにセレクトボックスで対応しようと思っておりますが、
$Selection = [0 => '商品について'];
こちらの部分を
$Selection = ['商品について' => '商品について'];
に変更いたしました。
h_tanaka
投稿日時: 2019/10/10 14:17
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: お問い合わせフォームに項目を追加したい(4系)
app/template 配下のものを修正されていますか?
http://doc4.ec-cube.net/design_template


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

mrkm
投稿日時: 2019/10/10 14:44
対応状況: −−−
新米
登録日: 2019/10/9
居住地:
投稿: 4
Re: お問い合わせフォームに項目を追加したい(4系)
ありがとうございます。
はい、そちらのデータを修正しております。
送信されるメールには

お問い合わせ項目
とだけ記載されており、{{ data.how }}こちらの値が取得できていないような状態です。
h_tanaka
投稿日時: 2019/10/13 12:39
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: お問い合わせフォームに項目を追加したい(4系)
デバッグしないとわからないですね。。

src/Eccube/Service/MailService.php
sendContactMail() 関数内の $formData をデバッグモードで出力してみてください。
dump($formData);


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

tkm12121
投稿日時: 2020/3/19 21:02
対応状況: −−−
半人前
登録日: 2020/3/19
居住地:
投稿: 13
Re: お問い合わせフォームに項目を追加したい(4系)
同じ箇所ではまっております。
対処方法がわかる方はいらっしゃらないでしょうか?
kamioka
投稿日時: 2020/7/28 12:12
対応状況: −−−
新米
登録日: 2020/7/22
居住地: 熊本県
投稿: 1
Re: お問い合わせフォームに項目を追加したい(4系)
同じ箇所でハマり、自己解決しました。


'mapped'      => true,


とすることで追加要素もメールに飛んできます


私の場合は、
ECCUBEROOT/app/Customize/Form/Extension/ContactTypeExtension.php
というファイルを作成し、

<?php

/*
 * customized by kamioka
 */

namespace Customize\Form\Extension;

use Eccube\Form\Type\Front\ContactType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints as Assert;

class ContactTypeExtension extends AbstractTypeExtension
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('how', ChoiceType::class, [
                'choices'     => [
                    '商品に関するお問い合わせ'    => '商品に関するお問い合わせ',
                    '商品の発送に関するお問い合わせ' => '商品の発送に関するお問い合わせ',
                    'その他のお問い合わせ'      => 'その他のお問い合わせ',
                ],
                'required'    => true,
                'multiple'    => false,
                'expanded'    => false,
                'mapped'      => true,
                'placeholder' => 'admin.common.select',
                'constraints' => [
                    new Assert\NotBlank(),
                ],
            ]);
    }

    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return ContactType::class;
    }
}



と書くことで、デフォルトの問合せフォームに項目を追加しました。


デザイン(見た目)は下記のファイルを
ECCUBEROOT/app/template/default/Contact/index.twig
ECCUBEROOT/app/template/default/Contact/confirm.twig

メール文面は下記のファイルを
ECCUBEROOT/app/template/default/Mail/contact_mail.twig
ECCUBEROOT/app/template/default/Mail/contact_mail.html.twig


それぞれ修正しました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.