バージョン選択

フォーラム

メニュー

オンライン状況

31 人のユーザが現在オンラインです。 (18 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 31
もっと...

サイト内検索

質問 > フロント機能 > カート画面での商品単位の指定個数への変更処理

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
be-s
投稿日時: 2021/3/29 17:48
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: manchester
投稿: 76
カート画面での商品単位の指定個数への変更処理
EC-CUBE] 4.0.4
[レンタルサーバ] AWS
[OS] Linux
[PHP] 7.3.14
[データベース] MySQL 5.7.28
[WEBサーバ] Apache/2.4.25
[ブラウザ] Chrome
[現象]


カート画面でセレクトボックスなどを使って
商品単位での商品の個数を変更したいのですが
バック側の処理は、
下記のように

CartController.phpの
handleCartItem
を変更するだけで可能でしょうか?
宜しくお願いいたします


/**
     * カート明細の加算/減算/削除を行う.
     *
     * - 加算
     *      - 明細の個数を1増やす
     * - 減算
     *      - 明細の個数を1減らす
     *      - 個数が0になる場合は、明細を削除する
     * - 削除
     *      - 明細を削除する
     *
     * @Route(
     *     path="/cart/{operation}/{productClassId}/{changeAmount},
     *     name="cart_handle_item",
     *     methods={"PUT"},
     *     requirements={
     *          "operation": "up|down|remove|change",
     *          "productClassId": "\d+",
     *          "changeAmount": "\d+"
     *     }
     * )
     */
    public function handleCartItem($operation, $productClassId,$chanheAmount)
    {        
        log_info('カート明細操作開始', ['operation' => $operation, 'product_class_id' => $productClassId]);

        $this->isTokenValid();

        /** @var ProductClass $ProductClass */
        $ProductClass = $this->productClassRepository->find($productClassId);

        if (is_null($ProductClass)) {
            log_info('商品が存在しないため、カート画面へredirect', ['operation' => $operation, 'product_class_id' => $productClassId]);

            return $this->redirectToRoute('cart');
        }

        // 明細の増減・削除
        switch ($operation) {
            case 'up':
                $this->cartService->addProduct($ProductClass, 1);
                break;
            case 'down':
                $this->cartService->addProduct($ProductClass, -1);
                break;
            case 'remove':
                $this->cartService->removeProduct($ProductClass);
                break;
            //個数変更商品単位個数指定変更
            case 'change':
                $nowAmount = "現在のカートの数";
                $differenceAmount = $nowAmount - $chanheAmount;

                $this->cartService->addProduct($ProductClass,$differenceAmount);
                break;
            //個数変更商品単位個数指定変更
        }

        // カートを取得して明細の正規化を実行
        $Carts = $this->cartService->getCarts();
        $this->execPurchaseFlow($Carts);

        log_info('カート演算処理終了', ['operation' => $operation, 'product_class_id' => $productClassId]);

        return $this->redirectToRoute('cart');
    }
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は70,501名です
総投稿数は100,697件です

投稿数ランキング

1
seasoft
7333
2
468
2922
3
AMUAMU
2712
4
nanasess
2127
5
umebius
1931
6
yuh
1612
7
red
1437
8
h_tanaka
1076
9
tsuji
926
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.