как установить ошибки из laravel в vuejs

как установить ошибки из laravel в vuejs

15.03.2020 03:07:36 Просмотров 15 Источник

Я пытаюсь извлечь ошибки из Laravel в Vue, но я получаю это сообщение об ошибке в моей консоли "не могу установить свойство 'errors' of undefined". Я пробовал различные подходы, такие как прямое присвоение ошибок и $set() vue, чтобы установить сообщение об ошибке для объекта error моей функции данных, но это все еще тщетно.

Это мой код

 export default{

  data(){
    return{
        form: {},
        errors:{}
    }
 },
 methods:{
      async onSave() {
        await Api().post('/stocks/store',this.form)
        .then()
        .catch(function (error) {
           if(error.response && error.response.status == 422) {
              let errors = error.response.data.errors;
              // this.$set(this.$data.errors,'errors',errors)
              console.log(errors);
              this.errors = errors;
           }
        });  
  }
}

Вот как выглядит сообщение об ошибке с моей консоли

enter image description here

Это сообщение об ошибке от laravel

enter image description here

чрасход установить это.ошибки с сообщением об ошибке от laravel

У вопроса есть решение - Посмотреть?

Ответы - как установить ошибки из laravel в vuejs / how set errors from laravel in vuejs

Является ответом!
Philippe Bouchard-Bourdeau

15.03.2020 06:34:00

Если вы внимательно посмотрите на ошибку, она говорит:

Cannot set property 'errors' of undefined

Таким образом, проблема заключается в том, что вы пытаетесь установить свойство неопределенного объекта, в данном случае: this, ваш компонент Vue.

Простой и удобный способ решить эту проблему - использовать функцию стрелки вместо обычной функции в вашем обратном вызове Promise.catch(). Проще говоря, регулярное выражение функции имеет свой собственный контекст this, где функция стрелки этого не делает.

Вот пример кода, который должен помочь вам лучше понять:

        new Promise().then()
        .catch((error) => {
           if(error.response && error.response.status == 422) {
              this.errors = error.response.data.errors;
           }
        });  

Чтобы узнать больше о функции стрелки и привязке this

Закрыть X