【備忘録】EC-CUBEの問い合わせフォームで会社名を表示させる方法

EC-CUBE講座

3系の頃にも同じ設定をしたのだけれど、忘れてしまっていたので💦
改めてメモしておく!EC-CUBE4.3で編集するやつは下の3つ!

ファイル名 パス 編集内容
ContactController.php /src/Eccube/Controller/ ログインユーザーの 会社名(`company_name`)を取得し、フォームにセット
‘$user->getCompanyName(), を追加
ContactType.php /src/Eccube/Form/Type/Front/ 会社名フィールド(`company_name`)をフォームに追加
`add(‘company_name’, TextType::class, […])` を定義
contact/index.twig /app/template/default/Contact/ フォームに 会社名の入力欄を追加
`{% form_widget(form.company_name) %}` を適切な場所に追加

ContactController.phpの編集するところ

    public function index(Request $request)
    {
        $builder = $this->formFactory->createBuilder(ContactType::class);

        if ($this->isGranted('ROLE_USER')) {
            /** @var Customer $user */
            $user = $this->getUser();
            $builder->setData(
                [
                    'name01' => $user->getName01(),
                    'name02' => $user->getName02(),
                    'kana01' => $user->getKana01(),
                    'kana02' => $user->getKana02(),
                    'postal_code' => $user->getPostalCode(),
                    'pref' => $user->getPref(),
                    'addr01' => $user->getAddr01(),
                    'addr02' => $user->getAddr02(),
                    'phone_number' => $user->getPhoneNumber(),
                    'email' => $user->getEmail(),
                    `$user->getCompanyName()` //①この行を追加
                ]
            );
        }

ContactType.phpの編集するところ

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', NameType::class, [
                'required' => true,
            ])
            ->add('kana', KanaType::class, [
                'required' => false,
            ])
            ->add('postal_code', PostalType::class, [
                'required' => false,
            ])
            ->add('address', AddressType::class, [
                'required' => false,
            ])
            ->add('phone_number', PhoneNumberType::class, [
                'required' => false,
            ])
            ->add('email', EmailType::class, [
                'constraints' => [
                    new Assert\NotBlank(),
                    new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null),
                ],
            ])
            ->add('contents', TextareaType::class, [
                'constraints' => [
                    new Assert\NotBlank(),
                    new Assert\Length([
                        'max' => $this->eccubeConfig['eccube_lltext_len'],
                    ])
                ],
            ])
            // ②会社名の項目を追加
            ->add('company_name', TextType::class, [
                'label' => '会社名',
                'required' => false,
                'attr' => ['class' => 'form-control'],
            ]);
    }

contact/index.twigの編集するところ

<dl>
    <dt>
        {{ form_label(form.company_name, '会社名', { 'label_attr': { 'class': 'ec-label' }}) }}
    </dt>
    <dd>
        <div class="ec-input{{ has_errors(form.company_name) ? ' error' }}">
            {{ form_widget(form.company_name) }}
            {{ form_errors(form.company_name) }}
        </div>
    </dd>
</dl>
タイトルとURLをコピーしました