バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 管理画面で仮登録→本登録に変更時に登録メアドと管理メアドに本登録完了メールを自動送信したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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を管理画面のテンプレートとしても配置してやる必要がありそうです。


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

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

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文の中になります。


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

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

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);
}
}
//★★ここまで
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.