私が取り組んでいるMagentoのインストールでカートを変更したので、衣類の価格のサイズを変更したい場合(たとえば、小さいものから大きいものに)、ドロップダウンボックスを使用して変更できます。アイテムを削除して新しいサイズで再度追加します。これを行う方法は、カートから古いサイズを削除して新しいサイズを追加することです(ある意味で、機能がなかった場合はどうすればよいですか)。
また、カートを編集して、商品のサイズを「小」から「大」に変更し、すでに「大」のサイズの商品がある場合、在庫が十分にある場合は2の数量をマージします(つまり、 5スモールを5ラージに変更し、すでに3ラージを持っている場合、カートは更新後に8ラージになります)、これを行う方法は、変更したサイズがカート内にあるかどうかを確認することです。十分な在庫があるかどうかを確認します。十分な在庫がある場合は、サイズを変更してアイテムを削除し、$cartData
既存のアイテムの数量変更を処理する変数を編集して、数量を変更します。これらは両方とも機能します。
しかし、私が見つけた問題は、もしあなたがこのようなカートを持っているとしたら
product | size | qty
---------------------------------------
product 1 | Large | 1
product 1 | Medium | 1
product 1 | Small | 1
大きいものを小さいものに、小さいものを大きいものに変更する場合、在庫を増やしていなくても十分な在庫がない場合はエラーが発生します。
カートからアイテムを削除しても、カートにサイズが存在しない場合にサイズを変更する方法が原因であることがわかりました。つまり、在庫がない場合は、在庫がなくなります。在庫が1つしかないアイテムを削除し、同じアイテムを1の数量で再度追加した場合、magentoは、数量が2のアイテムを取得しようとしていると見なします。
明らかに、製品サイズの交換に関する私の問題の解決策は、updateActionでカートからアイテムを削除するたびに、magentoに在庫を更新させることですが、CartController.phpファイルの元のupdateActionを見ても、アイテムがカートに入っているときにmagentoが使用している在庫レベルを更新する関数を見つけますが、アイテムが5つあると言っても、5が欠落していないことに気付いたので、一時的な在庫レベルを更新する必要があることはわかっています。データベース内の在庫
私の質問は、updateActionがカートコントローラーの在庫をどのように変更するかということです。それがどのように行われるかを見つけたら、updateActionの最後ではなく途中で強制的に動作させることができます。
注:同じ商品の2つのサイズを交換する(事実上カート内の位置を交換する)のはばかげているようですが、ユーザーはばかであり、このようなばかげたことをするだろうと想定する必要があります