html呈现标记内的Laravel变量

html呈现标记内的Laravel变量,laravel,email,templates,Laravel,Email,Templates,我想做一个动态电子邮件模板。通过动态,我的意思是用户可以更改内容:HTML静态文本和PHP标记名称或地址 这就是问题所在: 我试图在数据库中将整个模板保存为HTML,并使用{!!$data->value!!}调用它。 模板工作正常,并呈现为HTML标记。 但是,没有呈现PHP标记。它是这样的:{{$demo->demo_one}当我发送电子邮件时。 有人知道如何将PHP标记转换为它的值吗?或者也许有另一种方法来制作动态电子邮件模板 非常感谢您的帮助。似乎您必须重新编译代码: {!! Blade:

我想做一个动态电子邮件模板。通过动态,我的意思是用户可以更改内容:HTML静态文本和PHP标记名称或地址

这就是问题所在:

我试图在数据库中将整个模板保存为HTML,并使用{!!$data->value!!}调用它。 模板工作正常,并呈现为HTML标记。 但是,没有呈现PHP标记。它是这样的:{{$demo->demo_one}当我发送电子邮件时。 有人知道如何将PHP标记转换为它的值吗?或者也许有另一种方法来制作动态电子邮件模板


非常感谢您的帮助。

似乎您必须重新编译代码:

{!! 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 !!}

不是确切的答案,但请帮助我找到另一种方法,谢谢您的帮助请发布您的解决方案