我用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。但它也被称为页面刷新,我不想要那样。 如何防止在页面刷新时执行函数?
答案 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() !!}
我在刷新时收到警报,所以没关系。