Laravel将HTML变量传递给电子邮件视图

时间:2016-07-04 11:46:14

标签: php laravel email

我想添加一个选项,用户可以手动编辑他们想要在电子邮件中看到的文本。我添加了可以添加文本的字段,我希望您可以在该文本中添加变量,因此当它从数据库加载并将其放入电子邮件视图时,它会显示变量值{{$ variable在电子邮件中。

现在我已经完成了这个

                        $date = new DateTime();
                    $date->modify('+' . $vakance2->uzdevuma_laiks . ' days');
                    // Izveido praktikanta vardu un uzvardu
                    $name = $praktikants2->vards . " " . $praktikants2->uzvards; 
                    $vakances_epasts = $vakance2->vakance_approve_email;
                    // Masivs kas tiek nosutits 'emails.kval' vai 'emails.nokval' lapai
                    $data = array('vakances_epasts' => $vakances_epasts, 'name' => $name, 'vakance' => $vakance2->vakances_nosaukums, 'secret_key' => $praktikants2->secret_key, 'date' => $date, 'uzdevums' => $vakance2->uzdevuma_teksts);
                    // Vakances uzdevuma atrasanas vieta        
                    $pathToFile = public_path() . "/uploads/uzdevums/" . $vakance2->uzdevuma_fails;
                    // Epasta nosaukums
                    $title = "Pieteikums vakancei - " . $vakance2->vakances_nosaukums;
                    // Praktikanta epasts
                    $epasts = $praktikants2->epasts;
                    //Pārbauda vai praktikants ir piesaistīts esošajai vakancei
                    if($praktikants2->vakances_id == $vakance->id) {
                        // Parbauda vai praktikanta koeficients ir lielaks par vakances noteikto, lai kvalificētos tālāk. Ja ir tiek izmainīts ierakts tabulā 'praktikanti' ieraksts 'otra_karta' uz 1, ka praktikants ir kvalificējies. Ja nē tas paliek 0
                       if($praktikants2->koeficients > $vakance->koeficients_kval) {
                            $praktikants2->otra_karta = "1";

                            // Tiek nosutits epasts
                            Mail::send('emails.kval', $data, function($message) use ($pathToFile, $title, $name) {

                                $message->attach($pathToFile);
                               // $title = "Pieteikums vakancei";
                                $message->to('naurislinde@gmail.com', $name)->subject($title);

                                //$message->attach($pathToFile);


                            });
                        } else {

                            // Tiek nosutits epasts
                            Mail::send('emails.nokval', $data, function($message) use($title, $name)
                            {
                                //$title = "Pieteikums vakancei";
                                $message->to('naurislinde@gmail.com', $name)->subject($title);
                            });
                        }
                        $praktikants2->save();
                    }

视图是

{{ $vakances_epasts }}

这是保存在数据库中的代码,用户可以编辑

Sveicināts - {{ $name }} Jūs esat kvalificējies otrajai kārtai vakancē   {{   $vakance }}.
 <br><br><br>
  Apmeklējiet <a href="http://localhost:8000/uzdevums/{{ $secret_key }}">šo</a> lapu, lai apstiprinātu uzdevumu. Uzdevuma nodošanas laiks ir {{    $date->format('Y-m-d H:i:s T') }}
  <br><br>
  Uzdevums: {{ $uzdevums }}

但是当我发送电子邮件时,它显示的确如此。

Sveicināts - {{$ name}}Jūssatatkvalificējiesotrajaikārtaivakancē{{$ vakance}}。 Apmeklējietšo lapu,laiprtiprinātuuzdevumu。 Uzdevumanodošanaraiksir {{$ date-&gt;格式('Y-m-d H:i:s T')}}

Uzdevums:{{$ uzdevums}}

1 个答案:

答案 0 :(得分:0)

$vakances_epasts的值未通过Blade解析。相反,它被视为一个字符串,因为它会在数据库中显示消息,而不会替换变量。

我建议使用自定义算法解析字符串。您可以使用特定变量名称的简单字符串替换。

$string = 'Hello {{ $bar }}';
$value = 'world';
$string = str_replace('{{ $bar }}', $value, $string);
echo $string; // Hello world

一旦您自己解析了$string,请将其传递给您的视图,它应该按照您的预期运行。

提示:您可以将工作分成多个类,您可以将字符串通过。使维护干净的语法和组织逻辑变得更容易。在Jeffrey Way的Laravel 5 Generators包中使用了类似的方法来创建生成器。