会員登録フォームなどでは、必須項目と任意項目を変更したい場合がよくあります。その場合はEntryTypeというFormTypeクラスをカスタマイズすることで実現可能です。

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

company_name変更前(任意項目)

4系のコードだとEntryTypeクラスで会社名の定義は次のようになっています。

            ->add('company_name', TextType::class, [
                'required' => false,
                'constraints' => [
                    new Assert\Length([
                        'max' => $this->eccubeConfig['eccube_stext_len'],
                    ]),
                ],
            ])

requiredオプションがfalseになっていますし、constraints(制約)は入力文字数(Length)の制限のみが指定されています。

company_name変更後(必須項目)

        ->add('company_name', TextType::class, [
            'required' => true,
            'constraints' => [
                new NotBlank(),
                new Length([
                    'max' => $this->eccubeConfig['eccube_stext_len'],
                ]),
            ],
        ])

requiredオプションをtrueに変更し、constraints(制約)にNotBlankを追加しています。NotBlankは空白を禁止するフォームの制約です。

これで会社名のテキストフォームには自動で必須マークが表示され、入力しないとエラーとなります。


EC-CUBE4系プラグイン