質問 > 管理機能 > 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
koichi_51 |
投稿日時: 2020/3/9 10:45
対応状況: −−−
|
半人前 登録日: 2019/8/23 居住地: 投稿: 16 |
管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい EC-CUBE:3.0.18
DBサーバー:MySQL 10.2.31-MariaDB-cll-lve PHP:7.2.28 「管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい」 管理画面からのみ本登録させるようにしたいので、仮登録メールに本登録URLを掲載しないようにしました。 このため管理画面から本登録へのステータス移行を行う必要があり、管理画面から本登録にステータスを移行させたタイミングで本登録が完了した旨のメールを管理メアド、登録メアドに自動送信させたいと考えています。 管理画面から本登録に変更したときに「entry_complete.twig」を送信させる処理はどのように実装すればよいか教えていただけませんでしょうか。よろしくお願い致します。 |
umebius |
投稿日時: 2020/3/10 10:28
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい src/Eccube/Controller/Admin/Customer/CustomerEditController.phpのindexメソッドが会員登録している部分なので
最初のステータスと保存時のステータスを比較して、本登録されていればメール送信すれば良いです。 メール送信処理はsrc/Eccube/Service/MailService.phpの sendCustomerCompleteMailメソッドが使えると思いますが 管理画面側からの送信なのでMail/entry_complete.twigを管理画面のテンプレートとしても配置してやる必要がありそうです。
|
koichi_51 |
投稿日時: 2020/3/13 16:10
対応状況: −−−
|
半人前 登録日: 2019/8/23 居住地: 投稿: 16 |
Re: 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい ご回答いただきありがとうございます。
管理画面からの本登録変更時のメール送信処理として「CustomerEditController.php」のindexメソッドの「//編集」の部分に以下の処理を追加しました ------------------------------------------------------------------------ public function index(Application $app, Request $request, $id = null) { $app['orm.em']->getFilters()->enable('incomplete_order_status_hidden'); // 編集 if ($id) { $Customer = $app['orm.em'] ->getRepository('Eccube\Entity\Customer') ->find($id); if (is_null($Customer)) { throw new NotFoundHttpException(); } // 編集用にデフォルトパスワードをセット $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); // ★★この部分の処理を追加★★ $customerStatus = $Customer->getStatus(); if(strcmp($customerStatus, "本会員") == 0){ $app['eccube.service.mail']->sendCustomerCompleteMail($Customer); } // ★★追加ここまで★★ ------------------------------------------------------------------------- ステータスが「本会員」のときのみ管理画面の会員編集から「会員情報を登録」クリック時に登録完了メールが送信される想定なのですが、以下のような結果となります。 ・本会員→仮会員に変更し「会員情報を登録」ボタンを押下 →管理者メアドと登録メアドにメールが各1件ずつ届く ・仮会員で登録状態で「会員情報を登録」ボタンを押下 →メールは届かない ・仮会員→本会員に変更し「会員情報を登録」ボタンを押下 →管理者メアドと登録メアドにメールが各1件ずつ届く ・本会員で登録済状態で「会員情報を登録」ボタンを押下 →管理者メアドと登録メアドにメールが各2件ずつ届く 本会員から仮会員に変更した際にもメールが届いてしまう 本会員で登録済の状態から「会員情報を登録」ボタンをクリックしたときにメールが2件届いてしまう という現象が起こってしまっているのですが、追記した処理コードに不備があるのでしょうか? ご指摘などいただければありがたいのですが・・・ よろしくお願い致します。 |
umebius |
投稿日時: 2020/3/13 23:26
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい なぜ2回送信されるかというと、
まず最初に画面を開いた時に1回、 「会員情報を登録」ボタンをクリックした後で再度画面を開いた時にもう1回送信しているからではないでしょうか メールを送信するタイミングは少なくともフォームが送信されて内容にエラーもない場合なので if ($form->isValid()) {}のIF文の中になります。
|
koichi_51 |
投稿日時: 2020/3/16 10:37
対応状況: −−−
|
半人前 登録日: 2019/8/23 居住地: 投稿: 16 |
Re: 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい ご回答ありがとうございます。
ご指摘いただいたように if ($form->isValid()) {} のIF文の中に記述したらメール送信を1回にすることができました。 現状だと「本会員」の状態でもう一度「会員情報を登録」をクリックするとメールが送信されてしまうので、「仮会員→本会員」への変更時のみメールを送信するように致したく、以下のように変更を加えました。 一応想定通りの動作をしているのですが、このような記述変更を加えても問題ありませんでしょうか? ------------------------------------------------------------------------------- 【画面表示時のステータスの取得】 if ($id) { $Customer = $app['orm.em'] ->getRepository('Eccube\Entity\Customer') ->find($id); if (is_null($Customer)) { throw new NotFoundHttpException(); } // 編集用にデフォルトパスワードをセット $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); //★★ここで画面を開いたときのステータスを取得 $customerStatus01 = $Customer->getStatus(); 【「会員情報を登録」をクリック時のステータスの比較】 ※if ($form->isValid()) の中に以下を記述 //★★ここでクリック時のステータスを取得 $customerStatus02 = $Customer->getStatus(); //★★ここで画面表示時のステータスが「仮会員」かどうか比較 if(strcmp($customerStatus01, "仮会員") == 0 ){ //★★クリック時のステータスが「本会員」の場合メールを送信する if(strcmp($customerStatus02, "本会員") == 0){ $app['eccube.service.mail']->sendCustomerCompleteMail($Customer); } } //★★ここまで |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |