VueJS 和 laravel 验证数组

Posted

技术标签:

【中文标题】VueJS 和 laravel 验证数组【英文标题】:VueJS and laravel validation array 【发布时间】:2017-09-25 00:49:58 【问题描述】:

从 Laravel 到 VueJS 的验证。

我需要在正确的输入字段中显示正确的错误消息。 有人有想法吗?

form.vue:

<tr v-for="(item, index) in form.items">
 <td>
 <input type="text" v-model="item.name" class="form-control">
  <small class="text-danger" v-if="errors.name">
  errors.name[0]</small>
  </td>
   <input type="text" v-model="item.age" class="form-control">
  <small class="text-danger" v-if="errors.age">
  errors.age[0]</small>
  </td>
  </tr>

控制器:

$this->validate($request, [
        'items.*.name' => 'required',
        'items.*.age' => 'required',
    ]);

我在我的 vue 开发工具中得到了这个

【问题讨论】:

有什么问题? 没有出现错误 似乎错误是数组而不是名称。 errors[0] 从输出的错误转储开始并分析实际结构或阅读官方文档? 【参考方案1】:

看起来您必须遍历您的错误对象。在错误中,您的键是“items.0.name”,因此您可能必须使用 errors['items.0.name'] 。但我认为你必须改变你的 laravel 错误验证。

【讨论】:

【参考方案2】:

我使用甜蜜警报显示我的错误消息。我首先在我的 axios 帖子上发现了它。

     createAdminstrator(name, username, password, confirmpassword, superadmin) 
        const t = this;

        axios.post('/administrators', name: name, username: username, password: password, confirmpassword: confirmpassword, superadmin: superadmin)
            .then((data) => 
                t.administrators.unshift(data);
                t.error = '';
            )
            .catch(error => 
                if (error.response.data.errors.username) 
                  swal(error.response.data.errors.username[0], "Error", "error");
                 else if (error.response.data.errors.confirmpassword) 
                  swal(error.response.data.errors.confirmpassword[0], "Error", "error");
                 else if (error.response.data.errors.password) 
                  swal(error.response.data.errors.password[0], "Error", "error");
                
              );
    

【讨论】:

以上是关于VueJS 和 laravel 验证数组的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs如何显示laravel输入数组验证错误

Laravel 刀片上的 Vuejs

Larave中CSRF攻击

如何在 Vue JS 中使用 Laravel 进行身份验证,以便用户在没有登录的情况下无法从 URL 进入他的页面

laravel 和 vuejs 的身份验证问题

Laravel 5.3 和 VueJS 2 身份验证