EC-CUBE4で商品に項目を追加するには、
@EntityExtensionアノテーションを使って拡張を行う。

http://doc4.ec-cube.net/customize_entity

この時、@Eccube\FormAppendアノテーションを使うことで、
管理画面の登録フォームにも項目を追加できるのだが、
ここで商品規格の項目に対して、バリデーションを適用しようとすると、
登録しない規格の組み合わせ(つまりチェックを入れていないもの)に関しても、
アノテーションに設定したバリデーションが走ってしまう。
必須項目にしたい時などは、これによって登録自体ができなくなってしまう。

そういった場合にどうするか。

商品規格を拡張する

まずは商品の項目を拡張する時と同様、
@EntityExtensionアノテーションを使って商品規格の項目を作成。

ポイントは、requiredをfalseとすること。
trueにするとブラウザ側でバリデーションが走ってしまい、登録できなくなってしまう。
その後、商品規格の登録・編集ページのテンプレートに項目を追加。
この時点で、新しい項目の登録はできるようになる。

※ データベースへのカラム追加は完了していると仮定。

商品規格独自のバリデーションを改修

ここからがポイント、商品規格ページではチェックを入れているものと、入れていないものとで、
分けてからバリデーションをかけるという独自の処理がある。
それが、ProductClassEditType.phpで行われているので、
これを継承してそこに今回追加した項目のバリデーションを行う。

こうすることで、チェックを入れている規格の組み合わせだけに、
バリデーションをかけることができる。