これの続き。
前回導入したVeeValidateにカスタムバリデーションを追加したいと思い、
いろいろ調べたらv8nが便利そうだったので、使ってみた。
サンプルはTwitterIDのバリデーションの例
インストール
$ npm install --save v8n
カスタムバリデーションを追加する
plugins/vee-validate.ts
に追記していく
バリデーションの内容は、この記事から引用。すてきすぎる。。
import Vue from "vue"; import VeeValidate, { Validator } from "vee-validate"; import ja from "vee-validate/dist/locale/ja"; import v8n from "v8n"; Vue.use(VeeValidate, { inject: false }); // TwitterIDかの検証 const validateTwitterId = (twitterId: string) => v8n() .not.null() // 値が空じゃないか .string() // 文字列型 .first("@") // '@' から始まっているか .length(5, 16) // @を含む5文字以上16文字以内に収まっているかどうか *twitterの使用上は 4-15文字 .test(twitterId); // 値のテスト Validator.extend("twitterId", { getMessage: field => "The " + field + " value is not truthy.", validate: value => validateTwitterId(value) }); // メッセージをjaに変更 ja.messages.twitterId = (field: string) => `${field}の形式が正しくありません。`; Validator.localize("ja", ja);
カスタムバリデーションを追加するときのポイントは、以下の2つ
- カスタムバリデーションは、
Validator.extend
で追加 - jaのメッセージは、
ja.messages.<validation-name>
で設定
これだけ!以上!!