会員登録フォームなどでは、必須項目と任意項目を変更したい場合がよくあります。その場合は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-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。