通过详细信息页面添加产品数量的问题

Posted

技术标签:

【中文标题】通过详细信息页面添加产品数量的问题【英文标题】:problems with adding product Quanitity via a detail page 【发布时间】: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 来做到这一点,控制器在购物车中也可以正常工作代码 请显示
标签,包括提交表单的目的地。
【参考方案1】:

@Giles Bennett 当我删除表单标签时,添加到购物车链接工作得很好,这种情况下的主要问题是输入数量

<form method="post" style="margin-bottom:20px">    
     @csrf
       <!-- quantity numbers inputs -->
       <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>
                                                    <!-- quantity numbers inputs -->
                                                    <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>

  </form>

【讨论】:

以上是关于通过详细信息页面添加产品数量的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过条带结帐传递帐单详细信息

如何在另一个页面获取数组详细信息

codeigniter中的产品详细信息页面路由

Magento 在 onclick 链接上的产品详细信息页面上打开描述选项卡

Paypal Express Checkout.js - 填充产品详细信息

产品详细信息页面上的价格更改为 0.00 magento 2.4.3-p1