バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ゲスト購入で会員情報に追加した情報の取得に失敗する

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/5/23 10:26
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 933
ゲスト購入で会員情報に追加した情報の取得に失敗する
EC-CUBE3.0.16

国情報を会員情報に保持するように実装しました。
ゲスト購入で、注文内容確認ページから一度カートページに戻って再度注文内容確認ページに行こうとすると、エラーになってしまいます。
会員登録しての注文では問題ありません。

ゲスト購入のときは、会員情報はおそらくセッションに保持しているものと思われますが、セッションに保存・取得する処理がどこに定義されているかわからず、処理が追えないでいます。

■エラーメッセージ
ContextErrorException in UnitOfWork.php line 2918:
Catchable Fatal Error: Object of class __PHP_Incomplete_Class could not be converted to string

src/Eccube/Service/ShoppingService.php
    public function copyToOrderFromCustomer(Order $Order, Customer $Customer = null)
    {
        if (is_null($Customer)) {
            return $Order;
        }

        if ($Customer->getId()) {
            $Order->setCustomer($Customer);
        }

        $Country = $Customer->getCountry();

        dump($Country);    // ★ 出力してみた

        $Country = $this->app['orm.em']->getRepository('\Eccube\Entity\Master\Country')->find($Country);    // ★ ここでエラー

        $Order
            ->setCountry($Country)
            ->setName01($Customer->getName01())
            ->setName02($Customer->getName02())
            ->setKana01($Customer->getKana01())
            ->setKana02($Customer->getKana02())
            ->setCompanyName($Customer->getCompanyName())
            ->setEmail($Customer->getEmail())
            ->setTel01($Customer->getTel01())
            ->setTel02($Customer->getTel02())
            ->setTel03($Customer->getTel03())
            ->setFax01($Customer->getFax01())
            ->setFax02($Customer->getFax02())
            ->setFax03($Customer->getFax03())
            ->setZip01($Customer->getZip01())
            ->setZip02($Customer->getZip02())
            ->setZipCode($Customer->getZip01().$Customer->getZip02())
            ->setPref($Customer->getPref())
            ->setAddr01($Customer->getAddr01())
            ->setAddr02($Customer->getAddr02())
            ->setSex($Customer->getSex())
            ->setBirth($Customer->getBirth())
            ->setJob($Customer->getJob());

        return $Order;
    }


上記の位置で $Country をdump() してみたところ、次のように表示されました。
__PHP_Incomplete_Class {#808 ▼
  +"__PHP_Incomplete_Class_Name": "DoctrineProxy\__CG__\Eccube\Entity\Master\Country"
  +"__isInitialized__": true
  -id: 1
  -name: "日本"
  -rank: 1
  -country_code: 1
}


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

umebius
投稿日時: 2019/5/23 17:44
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1372
Re: ゲスト購入で会員情報に追加した情報の取得に失敗する
ShoppingControllerのnonmemberメソッドで保存されています。


            // 非会員用セッションを作成
            $nonMember = array();
            $nonMember['customer'] = $Customer;
            $nonMember['pref'] = $Customer->getPref()->getId();
            $app['session']->set($this->sessionKey, $nonMember);

            $customerAddresses = array();
            $customerAddresses[] = $CustomerAddress;
            $app['session']->set($this->sessionCustomerAddressKey, serialize($customerAddresses));



セッションのキーはeccube.front.shopping.nonmemberです。


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中U-Mebius

umebius
投稿日時: 2019/5/23 17:48
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1372
Re: ゲスト購入で会員情報に追加した情報の取得に失敗する
取得するときはShoppingServiceのgetNonMemberを使っています。

CountryはPrefエンティティと同様に、IDを別途セッションに保存して、取得の際にエンティティとして復元してやった方が良いと思います。

getNonMemberでこの処理をやっています。
h_tanaka
投稿日時: 2019/5/24 17:49
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 933
Re: ゲスト購入で会員情報に追加した情報の取得に失敗する
umebius さん

ありがとうございます。

別途セッションに保存してエンティティに復元する方法でうまくいきました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は52,898名です
総投稿数は93,915件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2012
4
468
1873
5
yuh
1610
6
umebius
1372
7
red
1364
8
h_tanaka
933
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
780
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

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

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