如何防止laravel中页面刷新时的函数调用

时间:2016-11-30 19:11:37

标签: laravel

我用get请求调用控制器函数:

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

这是我的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。但它也被称为页面刷新,我不想要那样。 如何防止在页面刷新时执行函数?

2 个答案:

答案 0 :(得分:0)

您应该更改代码中的两件事:

您的表单方法 POST

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

相应的路线方法

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

否则,每当您点击该页面时,您也可能会点击该控制器操作。

答案 1 :(得分:0)

我在路线中改变了这个

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

添加此表单

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



            <div class="form-group">

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

            </div>

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

我在刷新时收到警报,所以没关系。