gpt4 book ai didi

php - 在 Blade 中使用 Blade

转载 作者:可可西里 更新时间:2023-10-31 22:49:27 26 4
gpt4 key购买 nike

在我的数据库中,我保存包含 Blade 标记的文本,例如:

Hello {!! $name !!} how are you today.

我将此文本传递到变量 $text 中的电子邮件模板。在我使用的电子邮件中 ​​{!! $text !!} 获取邮件中的文本。但是,当发送电子邮件时,它会显示 {!!符号而不是变量(也被传递)。如何将 Blade 标记保存在我的数据库中并将其传递到需要替换 {!!一些 !!} 有正确的变量?

我的邮件功能。

$email = $order->email;
$name = $order->billingname;

//The text From the database.
$emailText = Email::findOrFail(5);
$mailtext = $emailText->text;

Mail::send('emails.tracktrace', ['text'=>$mailtext'email' => $email, 'name' => $name],
function ($m) use ($code, $email, $name) {
$m->from('info@domain.com', 'domain');

$m->to($email, $name)->subject('Track your package!');
});

更新

我有一个解决方法:

$mailtext = str_replace('[name]', $name, $mailtext);

这样用户就可以使用[name]了,我还是想知道如何只用blade来使用。

最佳答案

如果不首先呈现它,就无法使用 Blade 字符串来编译 PHP 代码。您应该尝试自定义渲染类或调用 Blade。

public function send()
{
$emailText = Email::findOrFail(5);
$name = $order->billingname;
$mailtext = \Blade::compileString($emailText->text);
ob_start();
eval("?> $mailtext <?php");
$mailtext = ob_get_clean();
Mail::send('emails.tracktrace', [
'text' => $mailtext,
'email' => $email,
'name' => $name
],
function ($m) use ($code, $email, $name) {
$m->from('info@domain.com', 'domain');
$m->to($email, $name)->subject('Track your package!');
});
}

但是它并不安全,因为有一个eval。 [在 Laravel 5.1 中测试]

也有一些写得很好的软件包用于此特定目的,例如 StringBladeCompiler v3

关于php - 在 Blade 中使用 Blade ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34236569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com