質問 > 管理機能 > 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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をしているにも関わらず、とれるデータに違いがあるため違和感を感じております。 これはバージョンアップによるフックポイントやトランザクション処理等が変更されたためなのでしょうか。 ご回答いただいた内容をよく理解しながらもう少しデバックしてみます。 |
umebius |
投稿日時: 2017/3/2 11:30
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 3.0.12-p1:受注画面にて受注ステータスの変更が検知できない また、編集完了後にreturn $app->redirect(...)などでリダイレクトをしてしまうと、当然ながら表示されるのはどうやっても更新後のデータになりますので、ご注意ください。
通常受注編集後はリダイレクトしますので。
|
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()しても、更新後のデータになるのはおかしい挙動ではないと思います。 これはdumpの挙動としておかしくはないです。bufferにため込んで後で吐き出すというイメージです。 http://symfony.com/doc/current/components/var_dumper.html#installation オブジェクトは参照として変数に代入しますので、find直後でdumpしても、dumpより下のプログラムで更新されたものが表示されます。 dumpの直後にexit()するなどすればその時点での値は分かります。(テスト環境で行ってください。また動作保証はし兼ねますが..) あるいは、dump($OriginOrder->getOrderStatus()->getId())のようにスカラー値をdumpすれば更新されないと思います。
|
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 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()しても、更新後のデータになるのはおかしい挙動ではないと思います。
|
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がすでに変更後の受注ステータスになっています。 以降も最新のステータスを保持していますので変更が検知できていない、という状況です。 この挙動はこのバージョンによるものなのでしょうか? 他に何か考えられる要因などありましたらご教示いただけませんでしょうか。 よろしくお願いいたします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |