質問 > フロント機能 > カートページのカート内商品にフォームを追加したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2021/6/29 17:55
対応状況: 解決済
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
カートページのカート内商品にフォームを追加したい EC-CUBE 4.0.5
カートページの商品に「ギフトラッピング」のチェックボックスを設けたいです。 カートページにフォームを設置してPOST送信に変更することで、カート内商品 CartItem に情報を保存しました。 app/template/default/Cart/index.twig
src/Eccube/Controller/CartController.php
この情報を注文情報作成時に注文明細 OrderItem に反映させるようにしました。 src/Eccube/Service/OrderHelper.php
ここまでは正常に動作するよう実装できたのですが、注文手続きページからカートページに戻ってチェックボックスのON/OFFを切り替えても注文明細に反映されません。 カート内商品の数量増減ボタンの処理を参考にしようと追っているのですが、カートの数量変更をどこで注文明細の数量に反映しているのかがわかりませんでした。 カート内商品情報の変更を注文明細に反映するにはどうすれば良いでしょうか? |
468 |
投稿日時: 2021/6/30 10:19
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カートページのカート内商品にフォームを追加したい src/Eccube/Service/OrderHelper.php createOrderItemsFromCartItems() 内に
処理を追記されているようですが この時の$item->isGiftWrapping()にON/OFFが反映されていないという事でしょうか? この段階でDBのdtb_cart_itemテーブルにはON/OFFは反映されていますか?
|
h_tanaka |
投稿日時: 2021/6/30 10:23
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: カートページのカート内商品にフォームを追加したい 468 さん
createOrderItemsFromCartItems() の $item->isGiftWrapping() では反映されています。 ただ、この関数は受注情報を生成するときにしか呼ばれないため、受注情報生成後はこの処理を通ってきません。 DBを確認すると、カート内商品の数量を増減すると、即時に受注明細の数量も更新されているようなので、プリプロセッサーで行ってるのかなと思ったのですが、それらしい処理が見当たらず。。 |
468 |
投稿日時: 2021/6/30 10:33
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カートページのカート内商品にフォームを追加したい 数量の変更などカートへの変更を行った後は
CartService->save()を実行しているのではないかと思います。 そのタイミングでDBやセッションへ反映されているのではないかと思います。
|
h_tanaka |
投稿日時: 2021/6/30 10:36
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: カートページのカート内商品にフォームを追加したい 468さん
はい、カート内商品 CartItem への変更は CartService->save() で行われていますが、これに対応する注文明細 OrderItem への変更を行っている箇所がわからないのです。 DBで確認して OrderItem.id は変わっていないので作り直しているわけではないようです。 |
468 |
投稿日時: 2021/6/30 10:39
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カートページのカート内商品にフォームを追加したい >ただ、この関数は受注情報を生成するときにしか呼ばれないため、受注情報生成後はこの処理を通ってきません。
デフォルトではカートの中身を変更してご注文手続き画面へ遷移すると もう一度受注データが生成され、createOrderItemsFromCartItems()を経由すると思いますが如何でしょうか? ON/OFFを変更してもカートの中身が変更されたと認識されていないのかもしれませんね。
|
h_tanaka |
投稿日時: 2021/6/30 10:47
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: カートページのカート内商品にフォームを追加したい 468さん
ほんとですね! 標準のEC-CUBE4.0.5 で試したら 数量変更で CartItem も OrderItem もレコードが作り直されました。 これは他のプラグインに制御が持っていかれているのか。。 調べてみます! ありがとうございます。 |
h_tanaka |
投稿日時: 2021/6/30 12:50
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: カートページのカート内商品にフォームを追加したい 商品オプションプラグインに制御されていました。
数量の増減は POST送信ではなく PUT送信だったため、これに合わせて「ギフトラッピング」チェックボックスも PUT送信に変更しました。 カート内商品の数量変更は QuantityAdjustValidator にて制御されていたため、こちらにチェックボックス変更の制御を追加することで動作するようになりました。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |