当前位置:  开发笔记 > 编程语言 > 正文

在刀片中使用刀片

如何解决《在刀片中使用刀片》经验,为你挑选了1个好方法。

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

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

我将此文本传递给变量$ text中的电子邮件模板.在我用的电子邮件{!! $ text !!}获取邮件中的文本.但是当电子邮件发送时它会显示{!! 标志而不是变量(也通过).如何在我的数据库中保存刀片标记并将其传递给我需要替换的代码{!! 有正确变量的东西!!}

我的邮件功能.

$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);

这样用户可以使用[名称],我仍然想知道如何仅使用刀片.



1> revo..:

编译PHP代码时不能使用刀片串而不首先渲染它.您应该尝试自定义渲染类或调用Blade.

public function send()
{
    $emailText = Email::findOrFail(5);
    $name = $order->billingname;
    $mailtext = \Blade::compileString($emailText->text);
    ob_start();
    eval("?> $mailtext  $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

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有