vee-validate 中的自定义验证消息

Pan*_*kaj 5 laravel vue.js vue-component vee-validate laravel-5.8

我正在使用 Laravel - 5.8 和 Vue.js。我的问题是关于如何在 Vee-Validate 库中显示规则的自定义错误消息。我的“必需”规则的自定义消息没有显示,而是显示:“first_name 字段是必需的。” 预期的消息是“请输入名字”。

下面的代码在 app.js 中

import { ValidationProvider } from 'vee-validate/dist/vee-validate.full';
Run Code Online (Sandbox Code Playgroud)

这是我的 HTML 组件代码。

<template>    
    <div>
        <form role="form">
            <ValidationProvider name="first_name" :rules="required">
                <div slot-scope="{ errors }">
                    <input v-model="profileForm.first_name" class="form-control">
                    <p>{{ errors[0] }}</p>
                </div>
            </ValidationProvider>
                  
            <button type="button" @click="validateBeforeSubmit()">Update Profile</button>
        </form>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

下面是我的 JS 脚本代码

<script>
    import { localize } from 'vee-validate/dist/vee-validate.full';
    import en from "vee-validate/dist/locale/en.json";

    export default {
        data() {
            return {
                profileForm: {
                    first_name: ''
                },
                customMessages: {
                    en: {
                        custom: {
                            'first_name': {
                                required: 'Please enter first name'
                            }
                        }
                    }
                },
            }
        },
        created() {
            localize("en", this.customMessages);
        },
        methods: {
            validateBeforeSubmit() {
                this.$validator.validateAll();
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

zco*_*p98 9

一般执行此操作的一种方法localize是使用extend()

import { extend } from 'vee-validate';
import { required } from 'vee-validate/dist/rules';

extend('required', {
    ...required,
    message: 'Please enter first name',
});
Run Code Online (Sandbox Code Playgroud)

这将传播并包含规则的所有默认属性,同时仍然允许您添加自己的自定义消息。

国际化示例:

import { extend } from 'vee-validate';
import { required } from 'vee-validate/dist/rules';
import i18n from 'localization';

extend('required', {
    ...required,
    message: i18n.t('LOCALIZATION_PATH'),
});
Run Code Online (Sandbox Code Playgroud)


Pan*_*kaj 5

custom关键字已在版本 3 中删除。现在替换为fields. 文档中也缺少此信息

欲了解更多信息,请点击 github 上的此问题链接