(Vue) Ant Design display client side as well as server-side validations in ant#39;s form with v-decorator((VUE)Ant Design使用v-Decorator以Ant的形式显示客户端和服务器端的验证)
本文介绍了(VUE)Ant Design使用v-Decorator以Ant的形式显示客户端和服务器端的验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已将Ant Design的Form组件与v-decorators
一起用于验证表单,我希望显示客户端(我目前已完成的v修饰符规则验证)和服务器端表单数据验证。
将其视为示例登录表单:
<template>
<AForm
:form="form"
@submit.prevent="handleSubmit"
>
<FormItem>
<AInput
v-decorator="['email', { rules: [{ required: true, message: 'Please input your email!' }] }]"
placeholder="Email"
/>
</FormItem>
<FormItem>
<AInput
v-decorator="['password', { rules: [{ required: true, message: 'Please input your Password!' }] }]"
placeholder="Password"
type="password"
/>
</FormItem>
<FormItem>
<AButton
html-type="submit"
class="w-full"
:loading="loading"
>
Log in
</AButton>
</FormItem>
</AForm>
</template>
<script>
import { Form, Input, Button } from 'ant-design-vue';
import { mapActions } from 'vuex';
export default {
components: {
AForm: Form,
FormItem: Form.Item,
AInput: Input,
AButton: Button,
},
data() {
return {
form: this.$form.createForm(this),
errors: {},
loading: false,
};
},
methods: {
...mapActions(['login']),
handleSubmit() {
this.errors = {};
this.form.validateFields((err, values) => {
if (!err) {
this.loading = true;
this.login(values)
.then(() => {
this.$router.push('/');
})
.catch(({ response = {}, message }) => {
const { errors } = response.data;
if (errors) {
this.errors = errors; // I want to display these errors
return;
}
this.$notify.error(message || 'Unable to login');
})
.finally(() => {
this.loading = false;
});
}
});
},
},
};
</script>
我已经将表单数据提交给了LALAVEL服务器,我最终会得到一些需要显示在Ant的表单中的验证错误。我的验证错误对象如下所示:
{
errors: {
email: "The email must be a valid email address.",
password: "(some validation message here)"
}
}
我不想失去Ant的表单验证功能,我还想显示服务器端的验证错误。有什么方法可以真正做到这一点吗?
推荐答案
可以使用Form的setFields
方法设置错误状态。
this.login(values)
.then(() => {
this.$router.push('/');
})
.catch(({
response = {},
message
}) => {
const {
errors
} = response.data;
if (errors) {
this.form.setFields({
'email': {
errors: [{
"message": errors.email,
"field": "email"
}]
},
'password': {
errors: [{
"message": errors.password,
"field": "password"
}]
}
});
return;
}
这篇关于(VUE)Ant Design使用v-Decorator以Ant的形式显示客户端和服务器端的验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:(VUE)Ant Design使用v-Decorator以Ant的形式显示客户端和


猜你喜欢
- 400或500级别的HTTP响应 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06