バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > バグ報告・利用に関する質問 > 会員情報編集で会員ランクチェックエラー

バグ報告・利用に関する質問

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/11/12 12:19
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
会員情報編集で会員ランクチェックエラー
EC-CUBE 4.0.2
会員ランクプラグイン 1.0.4

会員ランク表示のブロックをマイページのナビゲーションに追加しました。
app/template/xxxxx/Mypage/navi.twig
{{ render(path('block_customer_rank_info')) }}


app/template/xxxxx/Mypage/change.twig
{% include 'Mypage/navi.twig' %}


すべてのマイページで navi.twig を呼んでいるのですが、会員情報編集ページでのみエラーが発生します。

■エラーメッセージ
An exception has been thrown during the rendering of a template ("An exception occurred while executing 'INSERT INTO dtb_customer (name01, name02, kana01, kana02, company_name, postal_code, addr01, addr02, email, phone_number, birth, password, salt, secret_key, first_buy_date, last_buy_date, buy_times, buy_total, note, reset_key, reset_expire, point, create_date, update_date, control_code, company_post, company_official, email_mobile, fax_number, customer_category, reject_birth, send_dm, fax_dm, outbound, mail_arrival, follow_dm_return, uninform_customer, check_date, plg_mailmagazine_flg, point_expired_date, extension_period, customer_status_id, sex_id, job_id, country_id, pref_id, customer_rank_id, discriminator_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["\u30c8\u30a8\u30d3\u30b9", "\u30c6\u30b9\u30c8", "\u30bf\u30ca\u30ab", "\u30d2\u30ed\u30ce\u30ea", null, "7900807", "\u677e\u5c71\u5e02\u5e73\u548c\u901a", "3\u4e01\u76ee2-9", "tanaka@toebisu.jp";, "0899098255", "1986-02-11 15:00:00", "11ebe817cecb2821bcf756df43d4724697962143", "4cd3005e2e", "1447320947", "2019-10-24 05:46:55", "2019-10-24 14:46:55", "1", "4180.00", null, null, null, "0", "2019-11-12 03:01:56", "2019-11-12 03:01:56", "", null, null, "tanaka@toebisu.jp";, null, 1, 1, 1, 1, 1, 1, 1, 1, "2019-11-12 03:01:56", 0, "2020-11-17 15:00:00", null, 2, 1, null, null, 38, 1, "customer"]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1447320947' for key 'secret_key'").

in /Applications/MAMP/htdocs/xxxxx/local2/app/template/xxxxx/Mypage/navi.twig (line 27)
in /Applications/MAMP/htdocs/xxxxx/local2/app/Plugin/CustomerRank/Service/CustomerRankService.php (line 169)
in /Applications/MAMP/htdocs/xxxxx/local2/app/Plugin/CustomerRank/Controller/Block/CustomerRankInfoController.php (line 44)

app/Plugin/CustomerRank/Service/CustomerRankService.php

    public function checkRank(\Eccube\Entity\Customer $Customer, $force_flg = false){
        ...
        $Customer->setCheckDate($ToDay);
        $this->entityManager->persist($Customer);
        $this->entityManager->flush($Customer);    // ★ここでエラー発生
    }


マイページの他のページではエラーが発生しないことから、標準機能の会員情報編集ページでなにか特殊なことをしているのではないかと予想しているのですが、原因がまだわからずにいます。
src/Eccube/Controller/Mypage/ChangeController.php
umebius
投稿日時: 2019/11/12 23:45
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 会員情報編集で会員ランクチェックエラー
標準機能の会員情報編集ページでcloneされたCustomerがtokenStorageにセットされてます。
おそらくその会員ランクプラグインはtokenStorageからCustomerを取り出してると思われるので、エラーになるのではないでしょうか。


$LoginCustomer = clone $Customer;
$this->entityManager->detach($LoginCustomer);

...

(中略)

...

$this->tokenStorage->getToken()->setUser($LoginCustomer);


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

h_tanaka
投稿日時: 2019/11/13 7:48
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 会員情報編集で会員ランクチェックエラー
umebius さん

はい、tokenStorage から Customer を取得しているようです。

public function getLoginCustomer(){
    if ($this->authorizationChecker->isGranted('ROLE_USER')) {
        return $this->tokenStorage->getToken()->getUser();
    }
    return null;
}


なるほど、clone された Customer だから保存時に UPDATE ではなく INSERT になってしまうわけですね。

ルーティングが会員情報編集ページの場合は tokenStorage からではなく $this->getUser() で取得すれば良いような気がするのですが、試しに次のようにルーティングを取得しようとしたところ、自分自身のルーティング block_customer_rank_info が返ってきてしまいました。

/**
 * @Route("/block/customer_rank_info", name="block_customer_rank_info")
 * @Template("Block/customer_rank_info.twig")
 */
public function index(Request $request)
{
dump($request->get('_route'));


ブロック内で親のルーティングを取得するにはどうすればよいでしょうか?


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

h_tanaka
投稿日時: 2019/11/13 7:55
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 会員情報編集で会員ランクチェックエラー
試しに次のように変更してみましたが、同じエラーになってしまいました。。

$this->tokenStorage->getToken()->getUser();

 ↓
$this->getUser();


エラーを解決するにはどうすればよいでしょうか?


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

h_tanaka
投稿日時: 2019/11/16 9:43
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 会員情報編集で会員ランクチェックエラー
根本解決は難しいと判断し、会員ランクのブロックのレンダリングではランク更新を行わないことで問題を回避しました。

app/Plugin/CustomerRank/Controller/Block/CustomerRankInfoController.php
index() 内の次の行をコメントアウト。
if(!is_null($Customer))$this->customerRankService->checkRank($Customer);


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.