バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > Shippingデータが取れない??

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
mackarel
投稿日時: 2021/7/20 15:08
対応状況: 解決済
半人前
登録日: 2018/11/2
居住地:
投稿: 24
Shippingデータが取れない??
▼テンプレート
[EC-CUBE] 3系最新
[レンタルサーバ] さくら
[PHP] 7.4

構築済みのEC-CUBEを別サーバに移管したのですが、
ShoppingController.phpでフォームを作成している箇所、
getShippingFormBuilder→ShoppingService::getShippingFormBuilder内の1071行目辺り、
$Order->setPayment($payments[0]);


Undefined offset: 0
のエラーが発生しております。
調べると、
ShoppingService::getFormPayments内の998行目で取得しているshippingsにデータが入っていないようで、それに起因して支払い方法($payments)が取得できていないようです。
(nullではなく、shippings内のcollectionの配列データがない状態)

ここは必ずデータが入っているものと思うのですが、そうじゃないケースってあるのでしょうか・・・??また、解決方法知っている方いらっしゃいましたらお助けいただければ幸いです!!

補足:
ソースやDBはまるごとコピーしたので差はないです。

エラーが発生しているのは↓このあたりです。
// 配送業者の支払方法を取得
        $payments = $this->getFormPayments($deliveries, $Order);

        //配送方法の選択によっては支払い方法がないものが選択されている状態になるため、その場合支払い方法の1つ目を設定するように。
        $isFound = false;
        foreach ($payments as $payment) {
            if ($payment->getId() == $Order->getPayment()->getId()) {
                $isFound = true;
            }
        }
        if ($isFound == false) {
            $Order->setPayment($payments[0]);
            $Order->setPaymentMethod($payments[0]->getMethod());
            $Order->setCharge($payments[0]->getCharge());
            $Order = $this->getAmount($Order);
        }

【追記】
↑↑カスタマイズしてない箇所かと思いきやカスタマイズしてる箇所でした。
行数等デフォから異なっております。

原因らしきところは↓このあたりになります。(こちらは非カスタマイズ)
public function getFormPayments($deliveries, Order $Order)
    {
        $productTypes = $this->orderService->getProductTypes($Order);

        if ($this->BaseInfo->getOptionMultipleShipping() == Constant::ENABLED && count($productTypes) > 1) {
            // 複数配送時の支払方法
            $payments = $this->app['eccube.repository.payment']->findAllowedPayments($deliveries);
        } else {
            // 配送業者をセット
            $shippings = $Order->getShippings();
            $payments = array();
            foreach ($shippings as $Shipping) {
                $paymentsShip = $this->app['eccube.repository.payment']->findPayments($Shipping->getDelivery(), true);
                if (!$payments) {
                    $payments = $paymentsShip;
                } else {
                    $payments = array_intersect($payments, $paymentsShip);
                }
            }
        }
        $payments = $this->getPayments($payments, $Order->getSubTotal());

        return $payments;
    }

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » Shippingデータが取れない?? mackarel 2021/7/20 15:08
     Re: Shippingデータが取れない?? 468 2021/7/21 12:34
       Re: Shippingデータが取れない?? mackarel 2021/8/4 22:44

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,865名です
総投稿数は109,999件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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