バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

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

新規スレッドを追加する

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


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

...

(中略)

...

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


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

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

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

 ↓
$this->getUser();


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


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

h_tanaka
投稿日時: 2019/11/16 9:43
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 940
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系デザインテンプレート続々リリース中

統計情報

総メンバー数は54,522名です
総投稿数は94,240件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2016
4
468
1920
5
yuh
1610
6
umebius
1418
7
red
1376
8
h_tanaka
940
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
781
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.