【Laravel】Mailableでメール件名にもBladeファイルを使いたい
なぜやりたいか
- 件名と本文を同じところに定義したい!
- エンジニア以外でもパッとわかるように。
- 件名にも変数使いたいとき
- 本文と同じようにbladeで処理を統一したい
いままでは?
こんな感じでディレクトリ分かれがち。
- resources/lang/ja/hoge.php
- resources/views/emails/hoge.blade.php
return $this
->subject(__('hoge.subject'))
->text('emails.hoge')
->with(['data' => $data]);
}
件名もBlade使う
フォルダを切って、件名と本文のファイルを用意。
- resources/views/emails/hoge/subject.blade.php
- resources/views/emails/hoge/body.blade.php
subject()
内で view()
を使う。
return $this
->subject(view('emails.hoge.subject'))
->text('emails.hoge.body')
->with(['data' => $data]);
}
IDEが改行含みがち
IDE(VSCodeとか)がファイル保存時に改行保管してくれちゃったりする。
メール件名では改行取り除きたいので除去してあげる。
return $this
->subject(str_replace(PHP_EOL, '', view('emails.hoge.subject')))
->text('emails.hoge.body')
->with(['data' => $data]);
}
件名でも変数使いたい場合はこちら
return $this
->subject(str_replace(PHP_EOL, '', view('emails.hoge.subject')->with(['data' => $data])))
->text('emails.hoge.body')
->with(['data' => $data]);
}