EC-CUBE3ではFormBuilderで作成したフォームに対して簡単にバリデーション(制限)をかけることができます。
今回の記事では開発によく使用するバリデーションをご紹介いたします。
バリデーションにはFormBuilderのconstraintsオプションを設定します。
空欄を禁止する(Assert\NotBlank)
もっともよく使用する、必須項目のためのバリデーションです。
$builder
->add('name', 'text', array(
'label' => '名称',
'required' => true,
'constraints' => array(
new Assert\NotBlank(),
),
))
数字のみ(Assert\Regex or Assert\Type)
数量などのフォームで使用します。正規表現使用。
$builder
->add('quantity', 'integer', array(
'constraints' => array(
new Assert\Regex(array('pattern' => '/^\d+$/')),
),
))
;
Typeを使って整数値に制限します。
$builder
->add('number', 'integer', array(
'label' => '数値',
'required' => false,
'constraints' => array(
new Assert\Type(array(
'type' => 'integer',
)),
),
))
10以上の数値(Assert\GreaterThanOrEqual)
上の数値バリデーションと組み合わせることが多いです。
$builder
->add('quantity', 'integer', array(
'constraints' => array(
new Assert\NotBlank(),
new Assert\GreaterThanOrEqual(array(
'value' => 10,
)),
new Assert\Regex(array('pattern' => '/^\d+$/')),
),
))
;
1以上10以下の数値(Assert\GreaterThanOrEqual + Assert\LessThanOrEqual)
$builder
->add('quantity', 'integer', array(
'constraints' => array(
new Assert\NotBlank(),
new Assert\GreaterThanOrEqual(array(
'value' => 1,
)),
new Assert\LessThanOrEqual(array(
'value' => 10,
)),
new Assert\Regex(array('pattern' => '/^\d+$/')),
),
))
;
20文字以上100文字以下(文字数制限 Assert\Length)
テキスト系のフォームで活躍する文字数制限のバリデーションです。
$builder
->add('name', 'text', array(
'label' => '名称',
'required' => true,
'constraints' => array(
new Assert\NotBlank(),
new Assert\Length(
array(
'max' => 100,
'min' => 20,
)
),
),
))
正規表現(Assert\Regex)
ひらがなやカタカナのバリデーションは正規表現を使用します。自由に制限することができます。
名前や会社名のフリガナフォームで大活躍します。
$builder
->add('kana', 'text', array(
'constraints' => array(
new Assert\Regex(array('pattern' => "/^[ァ-ヶヲ-゚ー]+$/u", )),
),
))
;
いかがでしょうか。これらのバリデーションはform_widgetで出力したフォームでは自動的に適用されます。
フォームが簡単に作れるのはEC-CUBE3の大きなメリットで、このあたりはEC-CUBE2の時代よりも大幅に便利になりましたね。
EC-CUBE3をご利用の方はぜひご活用ください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。
EC-CUBEゴールドパートナー