解析存储在数据库中的body中的变量的问题

时间:2016-07-06 06:57:02

标签: laravel-5.2

我在解析变量时遇到了问题。

我有动态电子邮件模板,适用于所有类型的电子邮件,例如注册,激活等

假设我想发送反馈电子邮件,我有电子邮件模板,用于存储在数据库中的反馈。

在数据库中,它存储为名称:{{$ name}}

但是当我发送电子邮件时,它发送的是姓名:{{$ name}},而不是像名字这样的实际名称:john

以下是我的代码:

 $name = $request->get('name');
            $address = $request->get('address');
            $phone = $request->get('phone');
            $emailaddress = $request->get('email_address');
            $feedbacktext = $request->get`enter code here`('message');


            Mail::send('lugmety.frontend.partials.contactUsEmail',
                [   'name' => $name,

                ],
                function ($mail)
                use ($address, $name,$phone,$emailaddress,$feedbacktext) {
                    $mail->to('anandshrestha57@gmail.com')->subject('FeedBack Form')->from($emailaddress,$name);
                });

这是我的视图,其中包含从数据库中获取的电子邮件模板。

<?php echo \App\EmailTemplate::where('slug','contact-us')->first()->body; ?>

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

private function parsed_content($email_template, array $args = array()){
    $generated = \Blade::compileString($email_template);
    ob_start() and extract($args, EXTR_SKIP);
    try{
        eval('?>'.$generated);
    }catch (\Exception $e){
        b_get_clean(); throw $e;
    }
    $content = ob_get_clean();
    return $content;
}

用于解析存储在数据库中的电子邮件模板中的变量:

 $emailTemplate = EmailTemplate::where('slug','contact-us')->first();

        $email_body = $this->parsed_content($emailTemplate, array(
            'name' => $name,
            'address' => $address,
            'phone' => $phone,
            'emailaddress' => $emailaddress,
            'feedbacktext'=>$feedbacktext
        ));


        $body = json_decode($email_body,true)['body'];

发送电子邮件:

 Mail::send([],[],
                function ($mail)
                use ($body,$address, $name,$phone,$emailaddress,$feedbacktext) {
                    $mail->to('anandshrestha57@gmail.com')->subject('FeedBack Form')->from($emailaddress,$name)
                    ->setBody($body,'text/html');
                });

所以不需要提出每一个观点。来源:@ Is there any way to compile a blade template from a string?

答案 1 :(得分:0)

EmailTemplate模型

中添加功能
//$value is $EmailTemplate->body value
public function getBodyAttribute($value)
{
  //get value name by request function
  $name = request()->get('name');

       //do your regex code to replace {{ name }} from $name in $value and update.....

  //finaly return $value;
  return $value;
}