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オープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

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


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

    EC-CUBEバージョンアップ