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メールのテンプレートも編集
以上で完成です。




こんばんは。いつも大変お世話になっております。
商品名が長いので例えば19文字以降は『..』表記で省略したいのですが。お問い合わせメールテンプレートに
{{ data.Product }} >19 ? data.Product|slice(0,19) ~ ‘ …’ : data.Product }} と書いても配列だと思うので適用されないのですが、何かしら巧い書き方が有れば教えて頂けると大変助かります。
こちらでいかがですか?
{{ data.Product|length >19 ? data.Product|slice(0,19) ~ ‘ …’ : data.Product }}