vuelidateはvueJs 2に対して.0の検証ソリューション


紹介する
バックエンドプロジェクトでは、例えば私たちのLaravelフレームワークはフォーム検証に独自のvalidationメカニズムを持っています.彼は検証をFormRequestに統合します.
我々は、独自のインスタンス化された検証クラスを注入することに依存する必要があります.もちろん、フォームデータを直接メソッドで検証することもできます.
私たちのフロントエンドのプロジェクト、つまりvueのプロジェクトにも比較的良い検証ソリューションがあります.つまり、このvuelidateです.
1.インストール
フロントエンドパッケージをインストールするのと同じように、プロジェクト端末で実行します.
$ npm install vuelidate --save

インストールが完了したら、vuexを使用してmain.jsにこのpackageを導入します.
import Vue from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)

もちろん、検証が必要なコンポーネントで比較的小さなバージョンを参照することもできます.
import { validationMixin } from 'vuelidate'

var Component = Vue.extend({
  mixins: [validationMixin],
  validation: { ... }
})
requireのような形式で導入することもできます.
const { validationMixin, default: Vuelidate } = require('vuelidate')
const { required, minLength } = require('vuelidate/lib/validators')

2.使用
実は本当に使いやすいです.例えば、私のプロジェクトでの使用です.
1.登録検証
ユーザー登録時に通常処理するフォームフィールドは、nameemailpasswordconfirm_pwdRegister.vuedataです.
まずhtmlというコンポーネントファイルで基本的なスタイル構造を書きました.これは一人一人によって異なります.
次に、フォーム・データの検証を行います.
ここでは、ユーザー名とメールボックスの検証について、前に述べたように、検証ルールを導入します.
import { required,minLength,between,email } from 'vuelidate/lib/validators'

新しいユーザーへの登録なのでdemoを定義します
 data(){
    return{
        newUser: {
            name:'',
            email:'',
            password:'',
            confirm_pwd:''
        },
    }
},

次に、検証フィールドのルールを定義します.
validations: {
    newUser:{
       name: {
            required,
            minLength: minLength(2)
       },
       email: {
            required,email
       }
    }
},

これらの検証ルールを定義した後、以下は私の$v.nameの部分です.

1人1人が異なる公式文書にも$invalidが記載されています.
Field is required.
Field is required.
Field is required.
Group is invalid.
validationGroup: {{ $v.validationGroup }}
まずこのように を げて すべきは、 の$dirtyの を る があることです.
つまり$error $pending $each value $error It is a shorthand to $invalid && $dirtyこの$error$touchの の :$resetつまり2つの を えて$dirtyの を てみましょう
もちろん2つの な があります.true falseの には、 な がこれであり、サブノードの$dirty$invalidまたは$errorであることもあります.
この$dirtyを して$invalidを み わせると が したかどうかを できます$errortrueform-groupが で する
ここでの ルールフローは、form-group--errorclassである 、$errortrueが されます.
エラーを すると、エラーメッセージが されます.これは のエラースタイルです.
.form-group__message{
    display: none;
    font-size: .95rem;
    color: #CC3333;
    margin-left: 10em;
    margin-bottom: 12px;
}
.form-group--error+.form-group__message {
    display: block;
    color: #CC3333;
}

.form-group--error input, .form-group--error input:focus, .form-group--error input:hover, .form-group--error textarea {
    border-color: #CC3333;
}

2.パスワード
パスワードの は には とあまり がありませんが、 の ルールはrequiredで されています.
3. せ
これらに えて、 ルールに しない は、これを しないことが です.
フィールドでは、 のように み わせることができます.
validations: {
    flatA: { required },
    flatB: { required },
    forGroup: {
      nested: { required }
    },
    validationGroup: ['flatA', 'flatB', 'forGroup.nested']
}

いずれかがsameAsであり、そのうちの1つが ルールに しない 、FlatA flatB forGroup$v.validationGroup.$errorである.
4.
に、 を するとき、 たちはこのようなシーンに するに いありません.
えば、 たちのメールボックスがこのメールボックスに されている は、このメールボックスで するのは らかに たちが んでいるものではありません.
また、ログイン にユーザーのパスワードを する があります.
ここで した は、ユーザー の について、 みであれば みであることを すものです.false を にサポートします.async/awaitと み わせて するのも れているので、バックエンドAPIが した から することができます.
の を やすことができます.
name: {
    required,
    minLength: minLength(4),
    async isUnique (value) {
       if (value === '') return true
       const response = await fetch(`http://localhost:8000/api/unique/name/${value}`)
       return Boolean(await response.json())
    }
},

ここでは 、Fetch APIをバックエンドとして するデータ の のプロジェクトでローカルテストを い、データベースを することができます.
//      
Route::group(['prefix'=>'unique','middleware'=>['api','cors']], function () {
    Route::get('/name/{value}',function(Request $request,$value){
        if($value==="gavin"){
            return response()->json(false);
        }
        return response()->json(true);
    });
});

もし たちがgavinを したら、このユーザーはニックネームが されていることを します.ユーザー でLaravelの を したからです.
        

を するには、 のようにします.
5.カスタム
に、 ルールを するだけでなく、 ルールをカスタマイズして と み わせることもできます.
は な を しています.
export default value => {
  if (Array.isArray(value)) return !!value.length

  return value === undefined || value === null
    ? false
    : !!String(value).length
}

サイト
  • githubアドレス
  • package サイト