2016-11-29 20 views
0

私は$ emailtemplate変数をビューに渡します。文字列内のブレード変数を見つける

この$のemailtemplateは、次のプロパティを持つモデル

(string) 'from_name', (string) 'from_email', (string) 'subject', (string) 'body', (string) 'email_type', (integer) 'status' 

ユーザーズ彼らは上記の各フィールドを移入することができ、サイト、上のフォームからの$ emailtemplateの新しいインスタンスを作成することができています。

<strong>Dear {{$user->first_name}} </strong> 

FORMにユーザーによって移入と体の例は、正確に次の行(はいユーザーは、$ emailtemplateのボディプロパティに格納する形式にHTMLコードを書くことになります)になります

私は、ユーザーが電子メールを「プレビュー」できるようにするためのビューを作成しました。

:変数$ emailtemplateと$ユーザは、両方の

リソース/ビュー/電子メール/ preview.blade.php(プレビュー$ユーザー=認証::ユーザー()の場合のために)ビューに渡され

{!! $emailtemplate->body !}} 

この「プレビュー」ビューは強力なスタイリングを正しくレンダリングしますが、リテラル文字列内に格納されているため、ブレード変数参照を識別しません。

すなわちレンダリングされるHTMLはここで間違って起こっている正確

親愛なる{{する$ user-> first_name}}さん

は何ですか?フォームを介してユーザーが独自の電子メールテンプレートを開発できるようにしたい。 $ emailtemplate->本文は文字列データ型なので、$ emailtemplateと$ userの両方をビューに渡しています。Laravelはカッコの間にあるブレード変数の使用を認識しません。

どうすればこの問題を解決できますか?あなたの助け

+0

はあなたクラウズを示し

<strong>Dear {{$user->first_name}} </strong> will become: <strong>Dear Foo </strong> 

これは<strong>Dear Foo </strong>は、その後、あなたのメインブレードのテンプレートでこれを使用することができ$evaluatedTemplate

に保存されます、評価しましたトランス変数をビューに追加します。 –

+0

あなたのお手伝いがあれば、回答を受け入れたものとみなしてください。 – Webinan

答えて

0

ため

おかげであなたは別の変数によって注入されたすべての変数を見ると置き換えるために、Laravel文句再レンダリングブレード出力するので、これを行うことはできません!

だからhttps://github.com/TerrePorter/StringBladeCompiler

を見て、あなたは、例えば、最初のユーザー定義のテンプレートを評価する必要があります

{!! $evaluatedTemplate !!} 

も参照してください: https://github.com/Flynsarmy/laravel-db-blade-compiler

+0

お返事ありがとうございました:) – user3502651

+0

これを行う方法は他にありますか? $ viewオブジェクトをブレードを通して戻すことはできますか? 私は 経由でビューの最初の実行を取得します$ view = View :: make( 'email_templates.preview'、$ data); 次に、$ viewオブジェクトを のように戻します。$ view2 = View :: make($ view、['first_name'、 'Jordan']); return $ view2; – user3502651

+0

@ user3502651いいえ、これは私が知る限り不可能であり、これが人々がこれを可能にするカスタムパッケージを書いている理由です。 'toString'を使ってファイルに出力することはできますが、変数から入力することはできません。 – Webinan

関連する問題