EC-CUBEでフォームのカスタマイズをしていると、フィールドグループに追加のフィールドを含んではなりません。というエラーが発生することがあります。
このエラーを解決する方法をご紹介します。

エラーの原因

SymfonyのFormTypeは基本的にプログラムでaddした以外の要素を含んではなりません。

つまりtwig上で<input type=””>のようにベタ書きすることができないのです。FormTypeで定義した要素だけをフォームから送信することができ、それ以外の要素を含んでいると$form->isValidはFalseとなってしまいます。

これはFormに関するプログラムの保守性を担保するために必要な仕組みだと考えられますが、敢えて追加の要素をフォームのリクエストに含めたい場合も存在します。

追加フィールドの解決方法

この制限をなくすためには、FormTypeのオプションでallow_extra_fields=>trueという設定をしてやる必要があります。

このオプション設定によって、ベタ書きした追加要素が存在してもisValidがエラーを返すことはなくなりTrueとなります。

/**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => XXXXXXX::class,
        'allow_extra_fields' => true,
    ]);
}