2016-11-30 92 views
0

我打電話跟GET請求控制器功能:如何防止函數調用的頁面刷新在laravel

Route::get('/add/{id}', ['as'=>'addProduct','uses'=>'[email protected]']); 

這是我addProduct命令功能:

public function addProduct($id){ 



        if(Session::get('products')['id']){ 

        $product_niz = Session::get('products')['id']; 

           foreach ($product_niz as $item) { 

            $item != $id ? $a=false : $a=true; 

             if($a) goto end; 

            } 

            if(!$a) {Session::push('products.id', $id);goto end;} 

        } else { 

        Session::push('products.id', $id); 


        } 






      end: 

      $proizvodi = Session::get('products')['id']; 

      $products = Product::findMany($proizvodi); 

      if(Session::has('product_'.$id)){ 

       $amount = 1; 

       Cache::increment('amount'.$id,$amount); 

       Session::set('product_'.$id,Cache::get('amount'.$id)); 

       return view('checkout',compact('products')); 


      } else { 

       Cache::put('amount'.$id,1,10); 

       Session::set('product_'.$id,Cache::get('amount'.$id)); 

       return view('checkout',compact('products')); 
      }} 

當我打的Add按鈕我的一個視圖中,路由被調用並且函數addProduct被執行。但它也被刷新頁面上,我不想這樣。 如何防止頁面刷新時執行函數?

+0

你應該使用POST而不是GET來創建東西。 – ceejayoz

+0

我用PATCH方法解決了它。你指出我正確的方向。 Thabks – Danilo

回答

0

你或許應該改變兩件事情在你的代碼:

你的形式方法POST

<form method="POST">...</form> 

和路由方法相應

Route::post('/add/{id}', ['as'=>'addProduct','uses'=>'[email protected]']); 

否則,每次你打頁面,您可能也會觸發該控制器操作。

0

我的路線

Route::patch('/add/{id}', ['as'=>'addProduct','uses'=>'[email protected]']); 

添加這種形式

{!! Form::model($product,['method'=>'PATCH','action'=>['[email protected]',$product->id],'files'=>'true']) !!} 



      <div class="form-group"> 

       {!! Form::submit('ADD',['class'=>'btn btn-primary'])!!} 

      </div> 

    {!! Form::close() !!} 

我得到的刷新警報改變這一點,所以它的確定。