我想制作一个动态电子邮件模板。 “动态”是指用户可以更改内容:HTML(静态文本)和PHP标记(名称或地址)。
这是问题所在
{!! $data->value !!}
进行调用。 {{ $demo->demo_one }}
,当我发送电子邮件时。有人知道如何将PHP标记转换为其价值吗?也许还有另一种制作动态电子邮件模板的方法?
感谢您的帮助,谢谢。
答案 0 :(得分:1)
似乎您必须重新编译代码:
{!! Blade::compileString($demo->demo_one) !!}
答案 1 :(得分:0)
感谢艾哈迈德·努尔的回答,我可以找到另一种方式
我做了什么:
复制此功能
function render($__php, $__data)
{
$obLevel = ob_get_level();
ob_start();
extract($__data, EXTR_SKIP);
try {
eval('?' . '>' . $__php);
} catch (Exception $e) {
while (ob_get_level() > $obLevel) ob_end_clean();
throw $e;
} catch (Throwable $e) {
while (ob_get_level() > $obLevel) ob_end_clean();
throw new FatalThrowableError($e);
}
return ob_get_clean();
}
然后调用这样的函数
foreach ($data as $key) {
//first i need to get the template from database
$template = Blade::compileString($key->value);
$objDemo->template = $this->render($template, ['receiver' => 'Raven', 'demo_one' => 'Demo One Value', 'demo_two' => 'Demo Two Value', 'sender' => 'SenderUserName']);
}
答案 2 :(得分:0)
您可以在您的刀片文件中执行此操作(将 $email_content 视为用户配置的电子邮件内容):
fgetc()