2017-08-15 22 views
0

私は開発中のPOSを持っており、ページをリロードするとデータが再入力されることに気付きました。ページのリロード時にデータが再入力されないようにするにはどうすればよいですか?laravelのページ更新時にデータベースにデータが再入力されないようにする方法

私のコントローラはこのコードを持っています

public function DoAddSales(Request $request) 
{  
    $rules = [ 
     'customer_name'=>'required|alpha', 
     'or_number'=>'required', 
     'payment'=>'required', 
    ]; 

    $validator = Validator::make($request->all(),$rules); 

    if ($validator->fails()) { 
     return back()->withErrors($validator); 
    } else { 
     foreach ($request->input('id_item') as $id) { 
      $item_id[] = $id; 
     } 

     foreach ($request->input('i_name') as $name) { 
      $i_name[] = $name; 
     } 

     foreach ($request->input('id_categ') as $categ) { 
      $categ_id[] = $categ; 
     } 

     foreach ($request->input('quan') as $quan) { 
      $quantity[] = $quan; 
     } 

     foreach ($request->input('tot') as $total) { 
      $each_total[] = $total; 
     } 

     $last = sizeof($request->input('id_item'));  
     $i = 0; 

     while ($i < $last) { 
      $items = Item::find($item_id[$i]);  
      $sales = new sales;  
      $sales->or = $request->input('or_number'); 
      $sales->customer_name = $request->input('customer_name'); 
      $sales->item_id = $item_id[$i]; 
      $sales->item_name = $i_name[$i]; 
      $sales->category_id = $categ_id[$i]; 
      $sales->user_id = Auth::user()->id; 
      $sales->qty = $quantity[$i]; 
      $sales->total = $each_total[$i]; 
      $sales->save(); 

      DB::table('items')->where('id',$item_id[$i]) 
       ->update(['qty'=> $items->qty - $quantity[$i]]); 

      return view ('show_sales')->with(array(
       'name'=>$request->input('customer_name'), 
       'or_no'=>$request->input('or_number'),   
       'total'=>$request->input('getItemPrice'),    
       'change'=>$request->input('change'), 
       'orders'=>$i_name[$i], 
      )); 
      $i++; 
     } 
    } 
} 
+2

dbエントリの後にリダイレクト – inarilo

+1

まず、情報の保存、電子メールの送信など、何かを処理するために使用するメソッドは、ビューを返さないでください。 代わりにリダイレクト応答を返す必要があります。この方法では、ユーザーは更新/挿入コードを含むページをリフレッシュできないはずです。 –

+0

https://en.wikipedia.org/wiki/Post/Redirect/Get – linktoahref

答えて

0

使用次のようにをリダイレクトします。

は、あなたは

public function DoAddSales(Request $request){ 
    ... 
    // Your code 
    ... 
    return redirect()->to('\view\list')->with('alert-success','Records saved Successfully'); 
} 

NOTEとして関数の最後に次の行を追加することができ、\view\listのようなリダイレクトルートを仮定しますこのリダイレクトルートがGETタイプでなければなりません。

関連する問題