EC-CUBEの開発ではフォームの実装が欠かせませんが、着手時にまずNotBlankとrequiredの違いがわかりにくいという話をよく耳にします。

NotBlank

フォーム送信時に発動するサーバー側バリデーションです。

管理画面でよく見かける赤いエラーはこのconstarintに設定したバリデーションの作用です。

$builder->add('name', TextType::class, [
  'constraints' => [
    new Assert\NotBlank(),
   ],
])

フォームが空欄の場合、フォームをエラー状態にします。

($form->isValidがfalseになるのでController側の処理により画面の内容を保存できないようになります)

Form-NotBlank

required

HTMLのinput要素など出力時にrequired属性がつきます。

requiredでまぎらわしいのは、ほとんどのフォームタイプで、required=trueがデフォルトであるという点です。

// requiredを使用
$builder->add('name', TextType::class, [
 'required' => true, // 必須項目
]);

// 使用しなくてもデフォルトでrequired=trueです。
$builder->add('name', TextType::class);

// requiredをつけない
$builder->add('name', TextType::class, [
 'required' => false, 
]);
<input type="text" id="admin_product_name" name="admin_product[name]" required="required" class="form-control">
日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ