我将$ emailtemplate变量传递给视图。
此$ emailtemplate是具有以下属性的模型
(string) 'from_name', (string) 'from_email', (string) 'subject', (string) 'body', (string) 'email_type', (integer) 'status'
用户可以通过网站上的FORM创建$ emailtemplate的新实例,在那里他们可以填充上面的每个字段。
用户填充到FORM中的正文的一个示例将是以下行(是的用户将HTML代码写入表单以存储在$ emailtemplate的body属性中):
<strong>Dear {{$user->first_name}} </strong>
我创建了一个允许用户“预览”电子邮件的视图。变量$ emailtemplate和$ user都传递给视图(对于预览的情况,$ user = Auth :: user())
资源/视图/电子邮件/ preview.blade.php :
{!! $emailtemplate->body !}}
此“预览”视图正确呈现强样式,但不会识别刀片变量引用,因为它存储在文字字符串中。
即。呈现的HTML完全是
亲爱的{{$ user-&gt; first_name}}
这里出了什么问题?我想允许用户通过表单开发自己的电子邮件模板。我将$ emailtemplate和$ user传递给视图但是因为$ emailtemplate-&gt;正文是一个字符串数据类型Laravel无法识别括号之间使用刀片变量。
我该如何解决这个问题?
感谢您的帮助
答案 0 :(得分:0)
你不能这样做,因为Laravel不会重新渲染刀片输出,以查看和替换由另一个变量注入的任何变量!
查看https://github.com/TerrePorter/StringBladeCompiler
因此,您应首先评估用户定义的模板,例如
<strong>Dear {{$user->first_name}} </strong>
will become:
<strong>Dear Foo </strong>
此评估<strong>Dear Foo </strong>
将存储在$evaluatedTemplate
然后您可以在主刀片模板中使用它:
{!! $evaluatedTemplate !!}