Validation Vuejs如何显示laravel输入数组验证错误
我无法在vue组件中显示从my Laravel应用程序检索到的错误消息 这是“网络”选项卡中的响应Validation Vuejs如何显示laravel输入数组验证错误,validation,vue.js,laravel-5,Validation,Vue.js,Laravel 5,我无法在vue组件中显示从my Laravel应用程序检索到的错误消息 这是“网络”选项卡中的响应 {message: "The given data was invalid.",…} errors: {results.0.winner: ["This field is required"], results.1.winner: ["This field is required"],…} results.0.winner: ["This field is required"] results.1
{message: "The given data was invalid.",…}
errors: {results.0.winner: ["This field is required"], results.1.winner: ["This field is required"],…}
results.0.winner: ["This field is required"]
results.1.winner: ["This field is required"]
results.2.winner: ["This field is required"]
message: "The given data was invalid."
这是控制台中的错误
admin.js:59648[Vue warn]:呈现错误:“TypeError:无法读取
未定义“”的属性“0”
这是我的组件
<template>
<form @submit.prevent="submit" class="mb-5">
<div class="row">
<div v-for="(setting, index) in settings">
<div class="card">
<div class="card-body">
<div class="form-group">
<input type="text" class="form-control" v-model="setting.number">
<div v-if="errors && errors.results[index].winner" class="text-danger">{{ errors.results[index].winner }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-8">
<button type="submit" class="btn btn-primary">
Save Results
</button>
</div>
</div>
</form>
</template>
<script>
export default {
props: {
settings: {
type: Array,
default: () => []
},
},
data: function() {
return {
errors: {},
}
},
mounted() {
},
methods: {
submit: function() {
let results = [];
this.settings.forEach(function(item) {
results.push({
prize: item.prize,
winner: item.number
});
});
axios.post('save', {results: results}).then(response => {
if(response.status === 200) {
//window.location.href = '/admin/lottery'
}
}).catch(error => {
if (error.response.status === 422) {
this.errors = error.response.data.errors || {}
}
});
},
},
};
</script>
在上使用的索引键
errors.results[index].winner
它属于iterable变量设置,虽然您认为可以确定相交匹配,但不建议这样做,我认为这里是“渲染中的错误”
您必须编写以下代码:
<div v-for="(result, index) in errors.results">
<div class="card">
<div class="card-body">
<div class="form-group">
<input type="text" class="form-control" v-model="setting.number">
<div class="text-danger">{{ result.winner }}</div>
</div>
</div>
</div>
</div>
{{result.winner}
而不是:
<div v-for="(setting, index) in settings">
<div class="card">
<div class="card-body">
<div class="form-group">
<input type="text" class="form-control" v-model="setting.number">
<div v-if="errors && errors.results[index].winner" class="text-danger">{{ errors.results[index].winner }}</div>
</div>
</div>
</div>
</div>
{{errors.results[index].winner}
您在上使用的索引键
errors.results[index].winner
它属于iterable变量设置,虽然您认为可以确定相交匹配,但不建议这样做,我认为这里是“渲染中的错误”
您必须编写以下代码:
<div v-for="(result, index) in errors.results">
<div class="card">
<div class="card-body">
<div class="form-group">
<input type="text" class="form-control" v-model="setting.number">
<div class="text-danger">{{ result.winner }}</div>
</div>
</div>
</div>
</div>
{{result.winner}
而不是:
<div v-for="(setting, index) in settings">
<div class="card">
<div class="card-body">
<div class="form-group">
<input type="text" class="form-control" v-model="setting.number">
<div v-if="errors && errors.results[index].winner" class="text-danger">{{ errors.results[index].winner }}</div>
</div>
</div>
</div>
</div>
{{errors.results[index].winner}
如果没有错误怎么办。这仍然会渲染吗?我的方法在不同的列表中定义渲染错误。如果您希望在输入下呈现错误(以及每个字段),一个解决方案是,在axios的catch中,调用new函数,在这里,检查index error,如果存在,则向新属性设置[index]添加值。error,这样,您可以确保setting.error存在。如果没有错误,该怎么办。这仍然会渲染吗?我的方法在不同的列表中定义渲染错误。如果您希望在输入下呈现错误(以及每个字段),一个解决方案是,在axios的catch中,调用new函数,在这里,检查index error,如果存在,则向新属性设置[index]添加值。error,这样,您可以确保setting.error存在。