質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

6382閲覧

laravelでメールテンプレートをDBに保存

SeijiroKomatsu

総合スコア18

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/10/16 01:39

Laravelでメールテンプレートをviewの場所に置くのではなく。
DBからテンプレートをselectして使えるようにしたいです。
こういった場合は可能なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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();

Laravel 5.5 メール

Laravel 5.5 Bladeテンプレート

投稿2017/10/16 03:33

編集2017/10/16 06:56
aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SeijiroKomatsu

2017/10/19 05:01

ありがとうございます。Flynsarmy/laravel-db-blade-compiler これがなかなかうまく動きません。5.5では動かないのですか? あと、置換ぐらいしかできず、viewでのforeachとかは無理なのでしょうか?
aro10

2017/10/19 05:55

Laravel5.5でライブラリは置換処理程度ですが動作を確認しています。 ただ、フレームワークの仕組み的にはビューはファイルで配置する前提のようなので、考え方を変えて画像をシステムで保存するように、 データベースにはタイトルや配置場所等のメタデータを保存し、テンプレートデータはviewディレクトリに新規ファイルで保存していくという方が楽かと思います。 config/view.phpのpathsにビュー探索パスを追加できるので、storageディレクトリに動的に作成するビューファイルを分けて保存しても管理しやすいかと思います。
SeijiroKomatsu

2017/10/19 07:03

はい、それは私も考えてました。やっぱりそのやり方しかないですよね。 一旦それで作成します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問