多次插入的Laravel验证

时间:2017-08-11 19:31:05

标签: laravel validation vue.js laravel-5.2

我有一个体育赛事的数据库表。每个活动都有一年,活动名称和活动获胜者。

此表格的管理员视图允许按年份对事件进行分组并批量插入(通常一次排列8个体育赛事行)。我有一个用Vue编写的表,允许最多8个体育赛事行添加到界面,填充和提交的字段。这很好用很好

方法是

public function storeMultiple(Request $request)
    {

        $year = $request->year;
        $newEvents = $request->events;

        foreach ($newEvents as $key => $value) {
            DB::table('sport_events')->insert([
                'team_id' => 1,
                'sort_order' => $value['sort_order'],
                'year' => $year,
                'event' => $value['event'],
                'winner' => $value['winner'],
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now()
            ]);
        }

    } 

虽然我知道这不是一个好方法(数据库结构限制了我,而不是让一年成为其中的关键和体育事件),对于这样一个小而罕见的用例,我很高兴与表现权衡有关。

表单通过Axios提交到我的路线,所有内容都在我预期的数据库中。

现在我正在寻求为方法添加验证,确保每个事件都有事件名称和获胜者。

$validator = Validator::make($request->all(), [
            'year' => 'required',
            'events.*' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json([ 'errors' => $validator ]);
        }

似乎我的提交绕过了我所拥有的验证检查,获得了成功状态。

我的Vue提交方法执行此操作

submit () {
                axios({
                    method: 'post',
                    url: '/admin/sports',
                    data: {
                        year: this.year,
                        sports: this.sports
                    }
                }).then((response) => {
            window.location.href = '/admin/sports'

                }).catch((error) => {
                    // error
                })
            }

这个方法我哪里错了?

更新:Thiago的建议解决了问题但我必须在我的Vue组件中更新提交方法才能显示错误

submit () {
                axios({
                    method: 'post',
                    url: '/admin/sports',
                    data: {
                        year: this.year,
                        sports: this.sports
                    }
                }).then((response) => {
                    window.location.href = '/admin/sports'
                }).catch((error) => {
                    this.errors = error.response.data.errors
                    console.log(this.errors)
                })
            }

0 个答案:

没有答案