我使用的是Laravel 5.6.7和vue.js
验证消息
当验证在vue.js中有效时,它会显示“需要用户名字段”。可以是“请输入用户名”吗?我可以为同一个字段使用两个自定义错误消息吗?实施例
- 必填:请输入用户名。
- Alpha:请输入alpha chars。
醇>
我正在使用vee-validate包进行表单验证
以下是刀片中的代码
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-12">
<create-user></create-user>
</div>
</div>
</div>
vue.js组件中的代码。
<template>
<form role="form" class="row">
<input name="User Name" v-validate data-vv-rules="required|alpha" type="text"
v-model="createForm.UserName">
<p v-if="errors.has('User Name')">{{ errors.first('User Name') }}</p>
<button type="button" @click="validateBeforeSubmit()" class="btn btn-primary">
Create
</button>
</form>
</template>
<script>
export default {
data() {
return {
createForm: {
UserName: ''
}
};
},
methods: {
validateBeforeSubmit() {
this.$validator.validateAll();
}
}
}
</script>
答案 0 :(得分:3)
要实现您的目标,您可以使用Field Specific Custom Messages。
不多,您只需创建一个customMessages
字典,然后使用.localize()
将其添加到验证程序。
因此,您的模板中的任何内容都不会更改,但在<script>
中,您会声明customMessages
并将其应用于created()
生命周期挂钩,如下所示和演示中所示:< / p>
<script>
const customMessages = { // added
custom: { // added
'User Name': { // added
required: 'Required: Please enter username', // added
alpha: 'Alpha: Please enter alpha chars only.' // added
} // added
} // added
}; // added
export default {
data() {
return {
createForm: {
UserName: ''
}
};
},
created() { // added
// change 'en' to your locale // added
this.$validator.localize('en', customMessages); // added
}, // added
methods: {
validateBeforeSubmit() {
this.$validator.validateAll();
}
}
}
</script>
Runnable Demo:
Vue.use(VeeValidate);
const customMessages = {
custom: {
'User Name': {
required: 'Required: Please enter username',
alpha: 'Alpha: Please enter alpha chars only.'
}
}
};
Vue.component('create-user', {
template: '#create-user-template',
data() {
return {
createForm: {
UserName: ''
}
};
},
created() {
// change 'en' to your locale
this.$validator.localize('en', customMessages);
},
methods: {
validateBeforeSubmit() {
this.$validator.validateAll();
}
}
});
new Vue({
el: '#app'
})
&#13;
<script src="https://unpkg.com/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
<template id="create-user-template">
<form role="form" class="row">
<input name="User Name" v-validate data-vv-rules="required|alpha" type="text"
v-model="createForm.UserName">
<p v-if="errors.has('User Name')">{{ errors.first('User Name') }}</p>
<button type="button" @click="validateBeforeSubmit()" class="btn btn-primary">
Create
</button>
</form>
</template>
<div id="app">
To see the 'required' message: type "x", then delete<br>
To see the 'alpha' message: type "_"<br><br>
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-12">
<create-user></create-user>
</div>
</div>
</div>
</div>
&#13;
答案 1 :(得分:-3)
使用ajax来获取数据是行不通的 在vuejs和服务器之间