2
votes

I want to validate text fields, trying below code :

 <input v-validate="result.val=='Required' ? 'required' : ''" v-model="required" :name="f_name" type="text"/>

but getting this error:

app.js:48089 [Vue warn]: Failed to resolve directive: validate

Trying this:

<ValidationProvider name="phone" :rules="required" v-slot="{ errors }">
  <input class="form-control" :name="phone" type="text" v-model="form.phone"/>
  </ValidationProvider>
1
are you using vee-validate? if yes please provide its version - Boussadjra Brahim
@BoussadjraBrahim: Version of vee-validate "vee-validate": "^3.3.9", - user3653474

1 Answers

4
votes

According to the migration guide this directive is removed in v3.x :

Fields that had the v-validate directive needs to be wrapped by ValidationProvider component now, and they need to use v-model to properly tag themselves for vee-validate. So this:

<input type="text" name="field" v-validate="'required'">
<span>{{ errors.first('field') }}</span>

Will be re-written as this:

<ValidationProvider name="field" rules="required" v-slot="{ errors }">
  <input type="text" v-model="value">
  <span>{{ errors[0] }}</span>
</ValidationProvider>

Your code should be like :

<ValidationProvider name="f_name" :rules="result.val=='Required' ? 'required' : ''" v-slot="{ errors }">
<input v-model="required" :name="f_name" type="text"/>
</ValidationProvider>

You should add this to main.js :

import { ValidationProvider } from 'vee-validate';

Vue.component('ValidationProvider', ValidationProvider);

If you are not using a bundler and using vee-validate in the browser or from a CDN:

<script>
  // ...
  Vue.component('validation-provider', VeeValidate.ValidationProvider);
  // ...
</script>