EC-CUBEの開発ではフォームの実装が欠かせませんが、着手時にまずNotBlankとrequiredの違いがわかりにくいという話をよく耳にします。
NotBlank
フォーム送信時に発動するサーバー側バリデーションです。
管理画面でよく見かける赤いエラーはこのconstarintに設定したバリデーションの作用です。
$builder->add('name', TextType::class, [
'constraints' => [
new Assert\NotBlank(),
],
])
フォームが空欄の場合、フォームをエラー状態にします。
($form->isValidがfalseになるのでController側の処理により画面の内容を保存できないようになります)
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-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。
