バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
t_koda
投稿日時: 2017/3/2 10:22
対応状況: 開発中
新米
登録日: 2017/3/2
居住地:
投稿: 4
3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
▼テンプレート
[EC-CUBE] 3.0.12-p1

[PHP] 5.6.30
[データベース] MySQL 5.5.54
[導入プラグインの有無] ヤマトB2・CSV出力、ヤマトB2・CSV登録
[現象] 管理画面:受注画面ステータスを変更すると、updateDateというメソッドが動いてステータス変更を検知して日付のセット等をするかと思いますが、正しく動作していません。
dumpでデバックをはったところ、保存時、index処理の中の
$TargetOrder = $app['eccube.repository.order']->find($id);
で取得したはずの$TargetOrderがすでに変更後の受注ステータスになっています。
以降も最新のステータスを保持していますので変更が検知できていない、という状況です。
この挙動はこのバージョンによるものなのでしょうか?
他に何か考えられる要因などありましたらご教示いただけませんでしょうか。

よろしくお願いいたします。
umebius
投稿日時: 2017/3/2 10:25
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
EditControllerのupdateDateメソッドのことだと思いますが、
$TargetOrderは既に変更後のデータ(ステータス)です。

$OriginOrderが変更前のデータですが、それを踏まえても挙動がおかしいでしょうか?

なお、$TargetOrder = $app['eccube.repository.order']->find($id);で取得したインスタンスをフォームPOST後のindex内などどこかの場所でdump()しても、更新後のデータになるのはおかしい挙動ではないと思います。


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

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

t_koda
投稿日時: 2017/3/2 10:40
対応状況: 確認中
新米
登録日: 2017/3/2
居住地:
投稿: 4
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
umebius 様
早速のご回答ありがとうございます。

>$OriginOrderが変更前のデータですが、それを踏まえても挙動がおかしいでしょうか?
→はい、
$OriginOrder = clone $TargetOrder;
のあとにdumpにてOriginとTargetの両方をみております。

>なお、$TargetOrder = $app['eccube.repository.order']->find($id);で取得したインスタンスをフォームPOST後のindex内などどこかの場所でdump()しても、更新後のデータになるのはおかしい挙動ではないと思います。
→保存ボタン押下後のPOST後となりますが、まだ更新前のデータとして
$TargetOrder = $app['eccube.repository.order']->find($id);
から取得しているはずですので、この時点でデータが更新されているというのが理解できていないのです。
umebius
投稿日時: 2017/3/2 11:21
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
引用:
>なお、$TargetOrder = $app['eccube.repository.order']->find($id);で取得したインスタンスをフォームPOST後のindex内などどこかの場所でdump()しても、更新後のデータになるのはおかしい挙動ではないと思います。
→保存ボタン押下後のPOST後となりますが、まだ更新前のデータとして
$TargetOrder = $app['eccube.repository.order']->find($id);
から取得しているはずですので、この時点でデータが更新されているというのが理解できていないのです。


これはdumpの挙動としておかしくはないです。bufferにため込んで後で吐き出すというイメージです。
http://symfony.com/doc/current/components/var_dumper.html#installation


オブジェクトは参照として変数に代入しますので、find直後でdumpしても、dumpより下のプログラムで更新されたものが表示されます。

dumpの直後にexit()するなどすればその時点での値は分かります。(テスト環境で行ってください。また動作保証はし兼ねますが..)

あるいは、dump($OriginOrder->getOrderStatus()->getId())のようにスカラー値をdumpすれば更新されないと思います。


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

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

umebius
投稿日時: 2017/3/2 11:30
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
また、編集完了後にreturn $app->redirect(...)などでリダイレクトをしてしまうと、当然ながら表示されるのはどうやっても更新後のデータになりますので、ご注意ください。

通常受注編集後はリダイレクトしますので。


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

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

t_koda
投稿日時: 2017/3/2 11:39
対応状況: 開発中
新米
登録日: 2017/3/2
居住地:
投稿: 4
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない
umebius 様

ご丁寧なご回答ありがとうございます。

>これはdumpの挙動としておかしくはないです。bufferにため込んで後で吐き出すというイメージです。
>http://symfony.com/doc/current/components/var_dumper.html#installation
これは非常にわかりやすいです。勉強になりました。

ただ、バージョン3.0.10と今回の3.0.12-p1で同じ箇所にdumpをしているにも関わらず、とれるデータに違いがあるため違和感を感じております。
これはバージョンアップによるフックポイントやトランザクション処理等が変更されたためなのでしょうか。
ご回答いただいた内容をよく理解しながらもう少しデバックしてみます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.