質問 > フロント機能 > Preprocessor でカートに商品を追加するとエラー |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2020/3/4 16:59
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Preprocessor でカートに商品を追加するとエラー EC-CUBE 4.0.3
商品をカートに入れた時に条件を満たしていればプレゼント商品を自動でカートに入れる処理を ItemHolderPreprocessor を用いて独自で実装しました。 app/config/eccube/packages/purchaseflow.yaml
src/Eccube/Service/PurchaseFlow/Processor/PresentPreprocessor.php
しかし、カートページを表示すると次のエラーが発生してしまいます。 InvalidArgumentException: Entity has to be managed or scheduled for removal for single computation Eccube\Entity\CartItem@000000005a631e1500000000065c3715 (uncaught exception) at /Applications/MAMP/htdocs/test/local2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 504 エラーの発生箇所は次です。 Eccube/Service/CartService.php (line 287)
このエラーを解決するにはどうすればよいでしょうか? |
h_tanaka |
投稿日時: 2020/3/4 20:44
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: Preprocessor でカートに商品を追加するとエラー 原因がわかりました。
公開ステータスが「非公開」、販売種別がカート内商品と異なっているためでした。 非公開のステータスや販売種別が異なる商品をカートに追加できないのはわかりますが、エラーメッセージが非常にわかりにくいですね。。 エラーから原因が追えなかったので、気づくのに半日もかかってしまいました。。
|
h_tanaka |
投稿日時: 2020/3/4 20:49
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: Preprocessor でカートに商品を追加するとエラー 可能であれば、「通常商品」と「プレゼント商品」を同じカートに入れたいです。
プレゼント商品は0円なので決済処理等は通常商品と同じ扱いで問題ないです。 次のようにカートの識別子を分ける処理を入れてみましたが、他のValidatorでチェックされているのか上記と同じエラーが発生してしまいます。 src/Eccube/Service/Cart/SaleTypeCartAllocator.php
|
h_tanaka |
投稿日時: 2020/3/16 18:54
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: Preprocessor でカートに商品を追加するとエラー そもそも ItemHolderPreprocessor 内で商品をカートに追加するにはどうすればいいのでしょうか?
標準機能において、商品ページで商品を追加するときは次のような処理を行っています。 src/Eccube/Controller/ProductController.php
この処理を参考にしているのですが、疑問があります。 1. 明細の正規化ってなんでしょうか? ItemHolderPreprocessor で商品をカートに追加するときも必要でしょうか? 2. 処理内で purchaseFlow を呼んでいるのですが、ItemHolderPreprocessor から purchaseFlow を呼ぶのって正しいのでしょうか?
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |