2017-08-11 13 views
0

私はスポーツイベントのdbテーブルを持っています。各イベントには、年、イベント名、イベントの勝者があります。複数のインサートでのラーバル検証

このテーブルの管理ビューでは、イベントを年単位でグループ化し、一括して(通常は8つのスポーツイベントの行を同時に)挿入できます。私はVueで書かれたテーブルを持っていて、最大8つのスポーツイベント行をインターフェイスに追加し、フィールドに入力して送信します。これはもよくです。私はそれは素晴らしい方法(DB構造ではなく年が内のキーやスポーツイベントも持つよりも、ここで私を制限)し、そのような小さいとまれのためではないと知っているものの

このための方法は

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経由で私のルートに送信され、私が期待しているようにすべてがデータベースに格納されます。

ここで、メソッドに検証を追加して、各イベントにイベント名と勝者があることを確認します。

私のサブミットは、私が行っている妥当性チェックをバイパスして成功ステータスを得るようです。私の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 
       }) 
      } 

ていますか?

UPDATE:

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

あなたが何を意味する:チアゴの提案解決の事が、私はその後

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) 
       }) 
      } 

答えて

1

はこれを試してみてください表示するerroring得るために、私Vueのコンポーネント内の提出方法を更新しましたあなたの質問テキストは "成功ステータスを得る"?

データがDBに入るか、AJAX呼び出しが正常に返されたことを意味するだけですか? AJAX要求使用を失敗する

if ($validator->fails()) { 
    return response() 
     ->json([ 'errors' => $validator->errors()->messages() ]) 
     ->setStatusCode(400); 
} 
+0

いや、まだ検証がバイパスされます。また、イベントの配列を削除しても年が存在することを検証するだけでも単純化しても、( –

+0

私の答えは –

+0

でした。AJAX呼び出しが正常に返され、データが渡された場合には、 admin/costs'ですので、リダイレクトされないので少しうまく動作しますが、エラーが戻ってくることはありません。 –