Laravelでメールテンプレートをviewの場所に置くのではなく。
DBからテンプレートをselectして使えるようにしたいです。
こういった場合は可能なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Laravel5.5で以下情報を参考にDBに保存したメールテンプレートの利用を試してみました。
ビューはダミーのものにして、第二引数で流し込むデータにDBデータを利用する方法です。
Mail with templates from DB
php artisan make:mailで作成
app/Mail/TestMail.php
class TestMail extends Mailable { public function build() { $text = "DBから取得したデータ"; $this->view("dummy",["body"=>$text]); }
ダミーのビューテンプレート
resources/views/dummy.blade.php
{!! $body !!}
利用のテスト
routes/web.php
Route::get('/mailable', function () { #送信 #Mail::to("test@example.com")->send(new \App\Mail\TestMail()); #Webで描画 return new App\Mail\TestMail(); });
DBに保存したテンプレートに対して、{{$data}}等の置換処理を適用をしたい場合は、以下のライブラリ等が利用できます。
Flynsarmy/laravel-db-blade-compiler
#利用例 $template = Template::first(); #contentプロパティにテンプレート用データのあるモデルデータ $text = DbView::make($template)->with(['foo' => 'Bar'])->render();
投稿2017/10/16 03:33
編集2017/10/16 06:56総合スコア4106
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/19 05:01
2017/10/19 05:55
2017/10/19 07:03