web-dev-qa-db-fra.com

message de validation personnalisé dans vee-validate

À propos

J'utilise Laravel - 5.8 avec vue.js. Il s'agit d'afficher un message d'erreur personnalisé en utilisant le package vee-validate. Mais, pour certaines raisons, mon message personnalisé requis ne s'affiche pas et à la place, il affiche - le champ prénom est obligatoire. Attendu est - Veuillez entrer le prénom.

Le code ci-dessous est dans app.js

import { ValidationProvider } from 'vee-validate/dist/vee-validate.full';

Il y a un composant utilisé. Ci-dessous le code 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>

Ci-dessous est le code du script 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>

Suis-je en train de manquer quelque chose? Veuillez me faire savoir si vous avez besoin de plus d'informations.

3
Pankaj

Je pense que vous devez passer this.customMessages.en À localize() ou l'objet passé a une propriété de niveau supérieur en. Le dictionnaire passé devrait ne contenir que vos messages personnalisés .

0
Olivenbaum