LoginSignup
2
2

More than 5 years have passed since last update.

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

Posted at

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']);
    }
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2