独自バリデーション
標準にはない独自のバリデーションを定義する方法を解説します。
独自バリデーションとは
標準的なバリデーションにない独自のルールで入力条件チェックをする仕組みです。標準のバリデーションと同じ使用感で使うことができます。
例えば、テキストフィールドで日付入力を求める場合、「20XX/XX/XX」のように2000年代で且つ区切りが / (スラッシュ) を入力条件にしたいとしましょう。つまり、入力文字列の年が2000年代でなかったり区切りが / でない場合にエラーを出したいとします。
そんな条件チェックをしてくれる date2000slash というクラスがあれば、以下のような書き方ができて便利です。
required クラスは標準で存在しますが、残念ながら date2000slash というバリデーションクラスは存在しません。このような特殊なバリデーションを、無ければ作ってしまえと自分で定義できるのが独自バリデーションです。
独自バリデーションを定義する
独自バリデーションは簡単に作ることができます。
バリデーションクラス名 と バリデーション関数 をグローバルオブエジェクト espar_form 内に記載します。以下は、上記の例 date2000slash を定義している例です。
espar_form オブジェクト内に validators というキーを定義し、バリデーションクラス名がキーでバリデーション関数が値となる key-value オブジェクトを指定します。バリデーション関数が false を返す時にエラークラスが発動します。バリデーション関数の引数には、フォームの入力値が格納されています。
独自バリデーションは複数定義することができます。
変数付き独自バリデーション
標準バリデーション maxlength では1つの引数を指定することができて、「最大文字数100」を espf-maxlength-100 というクラスで記載できます。このようなバリデーションと同様に、引数を指定できる独自バリデーションを定義することもできます。
以下は、入力された文字列が「指定バイト数以下である」という条件でチェックするバリデーションを定義している例です。
バリデーション関数の2つ目の引数に引数が渡されます。上の例で定義した maxByteLength クラスは、以下のように使用できます。