【问题标题】: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 来做到这一点,控制器在购物车中也可以正常工作代码
  • 请显示
    标签,包括提交表单的目的地。

标签: php logic laravel-8 laravel-blade shopping-cart


【解决方案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>

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 2022-07-07
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多