【EC-CUBE4】お問合せフォームに商品選択項目を追加する方法

EC-CUBE4でお問合せフォームに商品選択項目を追加する方法です。

商品選択項目を追加するContactTypeExtensionを用意

<?php

namespace Customize\Form\Extension;

use Eccube\Entity\Product;
use Eccube\Form\Type\Front\ContactType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;

/**
 * お問合せフォームに商品選択項目を追加する方法
 *
 * Class ContactTypeExtension
 * @package Customize\Form\Extension
 */
class ContactTypeExtension extends AbstractTypeExtension
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('Product', EntityType::class, [
            'label' => '商品',
            'class' => Product::class,
            'required' => false,
            'placeholder' => '選択してください',
            'multiple' => false,
            'expanded' => false,
            'eccube_form_options' => [
                'auto_render' => true,
            ]
        ]);
    }

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

 

以下のように表示されます。

 

問合受付メールテンプレートを編集

設定>店舗設定>メール設定で問合受付メールテンプレートを以下のように編集してください。

 

HTMLメールのテンプレートも編集

 

以上で完成です。

2件のコメント

  1. こんばんは。いつも大変お世話になっております。
    商品名が長いので例えば19文字以降は『..』表記で省略したいのですが。お問い合わせメールテンプレートに

    {{ data.Product }} >19 ? data.Product|slice(0,19) ~ ‘ …’ : data.Product }} と書いても配列だと思うので適用されないのですが、何かしら巧い書き方が有れば教えて頂けると大変助かります。

  2. こちらでいかがですか?

    {{ data.Product|length >19 ? data.Product|slice(0,19) ~ ‘ …’ : data.Product }}

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください