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 }}