html呈现标记内的Laravel变量
我想做一个动态电子邮件模板。通过动态,我的意思是用户可以更改内容:HTML静态文本和PHP标记名称或地址 这就是问题所在: 我试图在数据库中将整个模板保存为HTML,并使用{!!$data->value!!}调用它。 模板工作正常,并呈现为HTML标记。 但是,没有呈现PHP标记。它是这样的:{{$demo->demo_one}当我发送电子邮件时。 有人知道如何将PHP标记转换为它的值吗?或者也许有另一种方法来制作动态电子邮件模板html呈现标记内的Laravel变量,laravel,email,templates,Laravel,Email,Templates,我想做一个动态电子邮件模板。通过动态,我的意思是用户可以更改内容:HTML静态文本和PHP标记名称或地址 这就是问题所在: 我试图在数据库中将整个模板保存为HTML,并使用{!!$data->value!!}调用它。 模板工作正常,并呈现为HTML标记。 但是,没有呈现PHP标记。它是这样的:{{$demo->demo_one}当我发送电子邮件时。 有人知道如何将PHP标记转换为它的值吗?或者也许有另一种方法来制作动态电子邮件模板 非常感谢您的帮助。似乎您必须重新编译代码: {!! Blade:
非常感谢您的帮助。似乎您必须重新编译代码:
{!! Blade::compileString($demo->demo_one) !!}
多亏了艾哈迈德·努尔的回答,我找到了另一条路 我所做的: 复制此函数
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']);
}
您可以在刀片文件中这样做,将$EMAILY内容视为用户配置的电子邮件内容:
@php
$email_content = str_replace('{{ $demo->demo_one }}', $demo->demo_one,
$email_content);
@endphp
{!! $email_content !!}
不是确切的答案,但请帮助我找到另一种方法,谢谢您的帮助请发布您的解决方案