バージョン選択

フォーラム

メニュー

オンライン状況

52 人のユーザが現在オンラインです。 (34 人のユーザが フォーラム を参照しています。)
登録ユーザ: 3
ゲスト: 49
start red 468 もっと...

サイト内検索

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

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

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/11/12 12:19
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1022
会員情報編集で会員ランクチェックエラー
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
居住地: 東京日本橋
投稿: 1605
Re: 会員情報編集で会員ランクチェックエラー
標準機能の会員情報編集ページでcloneされたCustomerがtokenStorageにセットされてます。
おそらくその会員ランクプラグインはtokenStorageからCustomerを取り出してると思われるので、エラーになるのではないでしょうか。


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

...

(中略)

...

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


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

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

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

 ↓
$this->getUser();


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


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

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

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


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

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


 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は63,788名です
総投稿数は96,888件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2450
4
nanasess
2079
5
yuh
1612
6
umebius
1605
7
red
1407
8
h_tanaka
1022
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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