【发布时间】:2022-01-13 07:07:06
【问题描述】:
我是 laravel 新手,我想通过详细信息页面添加数量
问题是它返回此错误。
Attempt to read property "quatity" on null
当我评论对此负责的部分并单击“增加”时,购物车中的数量会直接增加,而无需单击“提交”按钮。
我想要的是增加和减少而不是将其直接发送到我想要增加的数据库,然后单击提交以在我使用带有 post 方法的表单时发送它,@csrf 它返回此错误The POST method is not supported for this route. Supported methods: GET, HEAD
<div style="margin-bottom:20px">
<div class="quantity">
<a href="{{route('decrQtePanier',['id'=> $prod->id])}}" class="quantity-button minus">
<i class="klbth-icon-minus"></i>
</a>
<input value="{{$prod->pivot->quatity}}" name="cart[15945][qty]" type="text" id="quantity_61a9f089c4906" class="input-text qty text" step="1" min="1" max="11" size="4" placeholder="" inputmode="numeric" />
<a href="{{route('incrQtePanier',['id'=> $prod->id])}}" class="quantity-button plus">
<i class="klbth-icon-plus"></i>
</a>
</div>
<a style="text-decoration:none; " href="{{ url('add-to-cart/'.$prod->id) }}">
<button style="border-radius: 50px; padding:0 20px; margin-left:40px" type="submit" name="add-to-cart" value="352" class="single_add_to_cart_button button alt">
Ajouter
</button>
</a>
这是我的增加和减少方法,这些方法在购物车中运行良好
public function decrease($id)
{
$user = Auth::user();
$panier = $user->panier;
foreach ($panier->produits as $produit) {
if ($produit->id == $id) {
$qt = $produit->pivot->quantite;
$qt--;
if ($qt == 0) {
$panier->produits()->detach($produit->id);
} else $panier->produits()->updateExistingPivot($produit->id, ['quantite' => $qt]);
}
}
return redirect()->back();
}
public function increase($id)
{
$user = Auth::user();
$panier = $user->panier;
foreach ($panier->produits as $produit) {
if ($produit->id == $id) {
$qt = $produit->pivot->quantite;
$qt++;
$panier->produits()->updateExistingPivot($produit->id, ['quantite' => $qt]);
}
}
return redirect()->back();
}
这些是我的路线
Route::get('/deletePanier/{id}', 'App\Http\Controllers\PanierController@destroy')->middleware('auth')->name("deletePanier");
Route::get('/decreasePanier/{id}', 'App\Http\Controllers\PanierController@decrease')->middleware('auth')->name("decrQtePanier");
Route::get('/add-to-cart/{id}', 'App\Http\Controllers\PanierController@addToCart')->middleware('auth');
Route::get('/detail/{id}', 'App\Http\Controllers\HomePageController@product_detail');
【问题讨论】:
-
显示您的路线文件 - 可能是 web.php - 因为最初的指示是路线。您要提交的表单未定义为 POST 路由。
-
Route::get('/detail/{id}','App\Http\Controllers\HomePageController@product_detail');this is my route 它已经存在于问题中我知道它是一条获取路线,因为我想获取产品详细信息,然后将该产品添加到购物车表中 -
OK - 当您增加或减少数量时,您是否有理由尝试让控制器参与进来?你能不能只有通过javascript来增加或减少点击时数量输入字段的值的按钮,然后在提交表单时担心数量是多少?
-
是的,我需要它来填充数据库中的列数量,我不知道如何使用我以前从未使用过它的 javascript 来做到这一点,控制器在购物车中也可以正常工作代码
-
请显示
标签: php logic laravel-8 laravel-blade shopping-cart