Как бы я получил разные сообщения на каждом экране? - PullRequest
0 голосов
/ 10 ноября 2019

Я сражаюсь с Vee Validate 3.0 и начинаю задумываться, стоит ли продолжать. Все, что я хочу сделать, это создать собственное сообщение для определенного поля на определенной странице.

Я попытался с помощью приведенного ниже кода изменить сообщение регулярного выражения, но не могу заставить его работать.

Я использую Vee ​​Validate 3.0 с Vue, поэтому в Интернете не так много ресурсов, чтобы помочь. Синтаксис версии 2 кажется намного проще!

<ValidationObserver ref="observer" v-slot="{ invalid }" tag="form" @submit.prevent="submit()">
  <ValidationProvider :rules="{ regex: /^(0[1-9]|1[0-2])\/\d{4}$/ }" name="exp_date" v-slot="{ errors }">
    <input name="exp_date" v-model="payment.expdate" placeholder="Expiry MM/YYYY" class="form-control"/>
    <span class="warning">{{ errors[0] }}</span>
   </ValidationProvider>
</ValidationObserver>

<script>
import { ValidationProvider, ValidationObserver } from 'vee-validate'

export default {
  components: {
    ValidationProvider,
    ValidationObserver
  },
  data: function () {
    return {
      customMessages: {
        en: {
          fields: {
            'exp_date': {
              regex: 'The date format is MM/YYYY'
            }
          }
        }
      }
    }
  }
}
</script>

Обновление

У меня есть где-то это, но я не уверен, правильно ли я все настраиваю.

В моем main.js я импортирую vee-validate.js следующим образом

import './vee-validate'

В vee-validate.js я настраиваю все, что мне нужно для проверки на уровне приложения, как это

import { extend, configure, localize } from 'vee-validate'
import { required, max, max_value, email, regex, is, is_not } from 'vee-validate/dist/rules'
import en from 'vee-validate/dist/locale/en.json'

// Install rules
extend('required', required)
extend('max', max)
extend('max_value', max_value)
extend('email', email)
extend('regex', regex)
extend('is', is)
extend('is_not', is_not)

// Override English
localize({
  en: {
    messages: en.messages,
    fields: {
      exp_date: {
        regex: '{_field_} is the wrong format. MM/YYYY'
      }
    }
  }
})

Теперь настройка настраиваемого сообщения здесь работает для меня, но я не понимаю, если у меня одно и то же поле на 2 отдельных экранах, как я получу разные сообщения на каждом экране? ?

Обновление 2

Я не думаю, что есть способ настроить сообщение для каждой страницы - я думаю, что способ обойти это, чтобы каждая страница имела уникальные имена полей.

...