baserCMS

[baserCMS] メールフォームの通知メールにフィールドの値を入れる

More than 1 year has passed since last update.

baserCMSの複数設置可能な便利メールフォームは、その着弾メールの件名に、任意のフィールドの値を入れ込むことができます。


想定している対象者


  • baserCMSでウェブサイトを制作をしている方


発生状況


  1. 通知メールの件名に、公開側のフォームで入力・選択した値を設定したい場面


環境


  • baserCMS 3.0.9


設定の仕方

メールフォーム設定画面(例: /admin/mail/mail_contents/edit/ID)で設定できる自動返信メールの「件名」に、以下の形式でフィールド名を入力する。

{$name}

上記の例は、フィールド一覧画面(/admin/mail/mail_fields/index/ID)にフィールド名「name」が存在する場合の例です。


フィールドタイプ別に確認してみた結果


  • [OK] テキスト

  • [OK] ラジオボタン

  • [OK] セレクトボックス

  • [NG] マルチチェックボックス

気になったのでソース探索。

/lib/Baser/Plugin/Mail/Controller/MailController.php の _sendEmail() に以下があった。

配列形式のフィールドは未対応だと判りました。

// 件名にフィールドの値を埋め込む

// 和暦など配列の場合は無視
if (!is_array($value)) {
if ($mailField['MailField']['type'] == 'radio' ||
$mailField['MailField']['type'] == 'select') {
$source = explode('|', $mailField['MailField']['source']);
$mailContent['subject_user'] = str_replace('{$' . $field . '}', $source[$value-1], $mailContent['subject_user']);
$mailContent['subject_admin'] = str_replace('{$' . $field . '}', $source[$value-1], $mailContent['subject_admin']);
} else {
$mailContent['subject_user'] = str_replace('{$' . $field . '}', $value, $mailContent['subject_user']);
$mailContent['subject_admin'] = str_replace('{$' . $field . '}', $value, $mailContent['subject_admin']);
}
}