週間コンクリートで指摘を受けまして、block ID は変更して保存するとIDが変わってしまうので
ブロックの詳細で名前をつけて、その名前で判断したほうがいいようです。
$this->block->getBlockName();
で判断されたほうがいいようです。
レガシーフォームを複数使用する場合のメールテンプレートについて
2021年5月6日 at 22:47
お世話になっております。
「自動返信メールの実現」
http://concrete5-japan.org/community/forums/chat/post-19852/
こちらの投稿を参考にさせていただき、自動返信メールを送信することが出来ました。
(ありがとうございました。)
レガシーフォームを1つのサイトで複数利用し、各々のフォームに自動返信メール機能を
付加したいとおもいます。
レガシーフォームが1つの場合、自動返信メール機能を使用する場合は、
以下のようにファイルを追加しましたが、
/application/block/mail/controller.php
/application/mail/block_form_auto_reply.php
複数のレガシーフォームの場合は、どのようなファイル構成にすればよいか
ご教示いただけますでしょうか。
よろしくお願いいたします。
タグ:
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月18日 at 16:18
仮にページ編集にてフォームブロック→詳細でブロック名を「sampleform」とした場合、具体的にcontroller.phpでどのような記述になるのでしょうか?
スクリーンショット添付してます。
何行目に何を書いたらいいですか?
スクリーンショット添付してます。
何行目に何を書いたらいいですか?
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月20日 at 13:01
ankenさんありがとうございます。
sampleformだった場合の処理を
と書いたりして
が2ヶ所あるのでどちらでも試してみたのですがうまくいきませんでした。
結局、添付画像のようにif・else ifを使って
の時は
else if は
で
としました。
「いやいやこうするんだよ」というのがあれば教えていただきたいです。
よろしくお願いいたします。
sampleformだった場合の処理を
$mh->load('block_form_submission_sample');
と書いたりして
@$mh->sendMail();
が2ヶ所あるのでどちらでも試してみたのですがうまくいきませんでした。
結局、添付画像のようにif・else ifを使って
$this->surveyName =="sampleform"
の時は
$mh->load('block_form_submission_sample');
else if は
$this->surveyName
で
$mh->load('block_form_submission_user');
としました。
「いやいやこうするんだよ」というのがあれば教えていただきたいです。
よろしくお願いいたします。
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月20日 at 14:34
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月20日 at 14:46
今環境がないので、確認できてませんが
if($this->block->getBlockName() == 'sampleform') {
$myMailTemplate = "block_form_submission_sample";
}else{
$myMailTemplate = "block_form_submission";
}
〜
$mh->load($myMailTemplate);
@$mh->sendMail();
のように分岐してください。
if($this->block->getBlockName() == 'sampleform') {
$myMailTemplate = "block_form_submission_sample";
}else{
$myMailTemplate = "block_form_submission";
}
〜
$mh->load($myMailTemplate);
@$mh->sendMail();
のように分岐してください。
Re: Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月20日 at 15:09
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月27日 at 21:24
こんにちは。
あと、ブロック名 = メールテンプレート名にする方法もあります。
きちんと正しいブロック名をいれないといけなく、間違うとエラーになっちゃうので危険ですが・・・
$emailTemplate = $this->block->getBlockName();
// 管理者向け
$mh->load($emailTemplate);
// ユーザー向け
$mh->load($emailTemplate."_reply");
として、
applicaiton/mail/sampleform.php
applicaiton/mail/sampleform_reply.php
のメールテンプレートを使うようにするということもできます。
こうすると、メールのテンプレートを増やすだけで controller.php の改修をしなくて済みます。
パターンが多い場合はこちらがいいかもです。
あと、ブロック名 = メールテンプレート名にする方法もあります。
きちんと正しいブロック名をいれないといけなく、間違うとエラーになっちゃうので危険ですが・・・
$emailTemplate = $this->block->getBlockName();
// 管理者向け
$mh->load($emailTemplate);
// ユーザー向け
$mh->load($emailTemplate."_reply");
として、
applicaiton/mail/sampleform.php
applicaiton/mail/sampleform_reply.php
のメールテンプレートを使うようにするということもできます。
こうすると、メールのテンプレートを増やすだけで controller.php の改修をしなくて済みます。
パターンが多い場合はこちらがいいかもです。
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
2021年8月30日 at 10:05
Katz Uenoさん
ありがとうございます。
それぞれ違うブロック名をつけた2つのレガシーフォームを設置しテストしたところうまくいきました。
(↓分からない人のために)
Katzさんの「標準のメールフォームに確認メール送信機能とCSVを Shift JIS に変換する機能を追加する」
http://github.com/katzueno/c5-form-support-Japanese-style
を使わせていただき、そのレガシーフォームのcontroller.phpに
$emailTemplate = $this->block->getBlockName();
を足して
$mh->load('block_form_submission_user'); を $mh->load($emailTemplate."_reply"); に変更
※↑このcontroller.phpの変更済みスクリーンショットを添付してます。
applicaiton/mail/sampleform_reply.php
を設置し、該当のレガシーフォームのブロック名をsampleformにする。
applicaiton/mail/exampleform_reply.php
を設置し、先ほどとは別のレガシーフォームのブロック名をexampleformにする。
ただ、Katzさんがおっしゃるように正しいブロック名を入れないとエラーになるし、ブロック名を入れずにレガシーフォームを設置すればそれもエラーになりますね。
ありがとうございます。
それぞれ違うブロック名をつけた2つのレガシーフォームを設置しテストしたところうまくいきました。
(↓分からない人のために)
Katzさんの「標準のメールフォームに確認メール送信機能とCSVを Shift JIS に変換する機能を追加する」
http://github.com/katzueno/c5-form-support-Japanese-style
を使わせていただき、そのレガシーフォームのcontroller.phpに
$emailTemplate = $this->block->getBlockName();
を足して
$mh->load('block_form_submission_user'); を $mh->load($emailTemplate."_reply"); に変更
※↑このcontroller.phpの変更済みスクリーンショットを添付してます。
applicaiton/mail/sampleform_reply.php
を設置し、該当のレガシーフォームのブロック名をsampleformにする。
applicaiton/mail/exampleform_reply.php
を設置し、先ほどとは別のレガシーフォームのブロック名をexampleformにする。
ただ、Katzさんがおっしゃるように正しいブロック名を入れないとエラーになるし、ブロック名を入れずにレガシーフォームを設置すればそれもエラーになりますね。
Your post has been saved and will be published after approval by the forum moderator.
pictron
Re: レガシーフォームを複数使用する場合のメールテンプレートについて
block_form_auto_reply_new.php
と仮にします。
controller.phpで、メールのテンプレートを選択しているところがあります。
$myMailTemplate = "block_form_auto_reply"; // メールのテンプレート名
これを、それぞれブロックを入れた段階で、ブロックIDがつきますので
それによって振り分けます。
ブロックIDを先にbIDにしていたとして
if($bID == 1) {
$myMailTemplate = "block_form_auto_reply";
}else{
$myMailTemplate = "block_form_auto_reply_new";
}
とか