Привет! Есть повторяющийся код из вида в вид.
export default {
data() {
return {
form: {
name: null,
dateFrom: null,
},
error: null,
errors: []
}
},
methods: {
create() {
this.error = null;
this.errors = [];
axios
.post('/events/create', this.form)
.then(() => {
this.$router.push({name: 'events'});
})
.catch(error => {
if (error.response) {
if (error.response.data.error) {
this.error = error.response.data.error;
} else if (error.response.data.errors) {
this.errors = error.response.data.errors;
}
} else {
/* console.log(error.message);*/
}
});
}
}
}
Суть в том, что после axios запроса на api получаются ошибки валидация или одна ошибка из Exeption на php.
Если сервер возвращает ошибку, то обрабатываем её
.catch(error => {
if (error.response) {
if (error.response.data.error) { //если ошибка от Exeption
this.error = error.response.data.error;
} else if (error.response.data.errors) { // Если ошибки валидации формы
this.errors = error.response.data.errors;
}
} else {
/* console.log(error.message);*/
}
});
Кроме того мы вынуждены записывать эти данные в двух местах:
create() {
this.error = null;
this.errors = [];
...}
data() {
return {
.....
error: null,
errors: []
}
},
1. Как это можно сократить?
2. Как это можно вынести из всех views куда-то в отдельное место, где vue будет обрабатывать ошибки валидации и exeption?