バージョン選択

フォーラム

メニュー

オンライン状況

43 人のユーザが現在オンラインです。 (35 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 42
c-fox もっと...

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > フロント機能 > 受注データ移行後にマイページでエラー

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2017/10/6 9:23
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
受注データ移行後にマイページでエラー
EC-CUBE3.0.14

会員、受注、受注お届け先の情報を他サイトから移行してきたのですが、移行した会員のマイページ購入履歴を表示しようとするとエラーになるようになりました。

【エラーメッセージ】
Twig_Error_Runtime in Template.php line 230:
An exception has been thrown during the rendering of a template ("Entity was not found.") in "__string_template__c220618878f81d2b83684861d4a063dbc1d470e4111340bba33b0e731a811115" at line 68.

以下のソース内の {% if OrderDetail.enable %} 判定を {% if false %} に変更するとエラーにならなくなったため、受注詳細の商品情報が移行先サイトの商品情報と紐づいていないことが原因と思われます。

src/Eccube/Resource/template/default/Mypage/index.twig

                                                        {% if OrderDetail.enable %}
                                                            <img src="{{ app.config.image_save_urlpath }}/{{ OrderDetail.product.MainListImage|no_image_product }}">
                                                        {% else %}
                                                            <img src="{{ app.config.image_save_urlpath }}/{{ ''|no_image_product }}" />
                                                        {% endif %}


移行していない商品もあるためにデータのヒモづけを行うことはできません。
このため、この問題をソース側で解決したいと思うのですが、どうすればよいでしょうか?

OrderDetail.enable から以下の関数が順に呼ばれることまでは追えましたが、どのソースをどのように修正すればよいかわからない状態です。

src/Eccube/Entity/OrderDetail.php

    public function isEnable()
    {
        if ($this->getProductClass() && $this->getProductClass()->isEnable()) {
            return true;
        } else {
            return false;
        }
    }


src/Eccube/Entity/ProductClass.php

    public function isEnable()
    {
        return $this->getProduct()->isEnable();
    }


src/Eccube/Entity/Product.php

    public function isEnable()
    {
        return $this->getStatus()->getId() === \Eccube\Entity\Master\Disp::DISPLAY_SHOW ? true : false;
    }


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2017/10/6 10:01
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
Re: 受注データ移行後にマイページでエラー
自己解決しました。

商品規格エンティティが受注詳細と商品情報との紐づけが行われている前提で実装されており、データ移行したユーザーの受注詳細から商品情報を取得できずにエラーとなっていました。

以下の実装により解決しました。

src/Eccube/Entity/ProductClass.php(44行目)

    public function isEnable()
    {
        if ($this->getProduct()->__isInitialized__ === false) {
            return false;
        }

        return $this->getProduct()->isEnable();
    }


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2017/10/6 10:05
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
Re: 受注データ移行後にマイページでエラー
本件、同様の問題が起こっている人も少なくないはず。。

どなたかプルリクエストしてくれないでしょうか?
(当方、プルリクエストしようとしてもGitの環境構築がうまくいきませんでした)


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

468
投稿日時: 2017/10/6 10:27
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 752
Re: 受注データ移行後にマイページでエラー
私の個人的な考えかもしれませんが、
マイページの注文履歴にはデフォルトで再注文の機能がありますので、
商品との紐づけは必須という前提で問題無いのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

h_tanaka
投稿日時: 2017/10/6 10:33
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
Re: 受注データ移行後にマイページでエラー
468さん
再注文のときは、受注詳細に紐づけできていない商品があった場合は「現時点で販売していない商品が含まれておりました。該当商品をカートから削除しました。」というメッセージが出るのでエラーになりません。
しかしなにかしらの原因で紐づけができていないと購入履歴でエラーになるというのは、データが不正な場合のエラー処理がしっかりできていないためと思うのです。


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

468
投稿日時: 2017/10/6 10:44
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 752
Re: 受注データ移行後にマイページでエラー
受注明細に商品が紐づいていなくても動作するようにするのではなく、
エラー処理が必要という事をおっしゃられてたのですね。
(商品が紐づいていなくても動作するようにするという意味かと思っていました)


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

h_tanaka
投稿日時: 2017/10/6 10:50
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
Re: 受注データ移行後にマイページでエラー
理由をあとづけしたようですみません。
エラー処理の観点からいうと、 Product エンティティの isEnable() にも同様のエラー処理が必要ですね。


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

468
投稿日時: 2017/10/6 11:01
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 752
Re: 受注データ移行後にマイページでエラー
いえいえ。
私も早とちりをしてました。

確かに同じような判定が必要な箇所は他にもありそうですね。
リレーションがあるところも多いですし。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

h_tanaka
投稿日時: 2017/10/6 12:17
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 340
Re: 受注データ移行後にマイページでエラー
追加の修正点です。

マイページ購入履歴詳細において、各商品の現在価格がなぜかすべて118,800円で表示されてしまいました。

以下の修正で解決しました。

src/Eccube/Entity/ProductClass.php(37行目)

    /**
     * Is Inithilized
     *
     * @return bool
     */
    public function isInithilized()
    {
        if ($this->__isInitialized__ === false) {
            return false;
        }

        return true;
    }


app/template/default/Mypage/history.twig(110行目)

                                        {% if OrderDetail.product and OrderDetail.productClass.inithilized and OrderDetail.price_inc_tax != OrderDetail.productClass.price02IncTax %}
                                            <dd id="detail_list__price02_inc_tax--{{ OrderDetail.id }}" class="text-danger">
                                                <strong>【現在価格】{{ OrderDetail.productClass.price02IncTax|price }}</strong>
                                            </dd>
                                            {% set remessage = true %}
                                        {% endif %}


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,074名です
総投稿数は83,207件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1653
4
yuh
1405
5
red
1067
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
752
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 629
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.