Laravel邮件方法默认搜索views / emails文件夹中的模板。我会使用邮件方法与存储在DB中的模板。我应该如何修改邮件,以便从任何来源获取模板?
答案 0 :(得分:2)
Laravel邮件方法不会在views / emails文件夹中搜索模板,您必须提及要用于邮件的刀片模板名称。
我们假设您在视图文件夹中有一个名为 mymailtemplates 的文件夹,其中有一个名为 welcome.blade.php 的模板,然后您可以使用此模板发送邮件,如下所示
Mail::send('mymailtemplates.welcome', $data, function($message)
{
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
$message->attach($pathToFile);
});
现在,如果你想使用存储在DB中的模板,那么在变量中获取这些模板并创建一个虚拟刀片文件(dummy.blade.php),它只会回显给它的内容(在这种情况下是模板)从DB),您现在可以使用存储在DB中的模板发送邮件,如此,
Mail::send('mymailtemplates.welcome', $templatedata, function($message)
{
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
$message->attach($pathToFile);
});
其中$ templatedata将包含从DB中分阶段的模板代码。
答案 1 :(得分:1)
好的,为了完整起见:
首先,您需要创建一个名为example.blade.php的模板,该模板在resources / views / email中创建:' email.example'
<!DOCTYPE html>
<html lang="en-EN">
<head>
<meta charset="utf-8">
</head>
<body bgcolor="#11C9FF">
{!! $body !!}
</body>
</html>
当然,你可以在这里使用模板继承,但让它保持简单。
使用下一个创建的模板获取包含此电子邮件内容的记录。我假设你有一个HTML邮件模板存储在一个名为(例如)电子邮件的模型中。 (列:id,subject,body)。
在您的控制器功能中加载模板内容:
// assuming your email template has an id of 1!
$mailtemplate = Emails::find(1);
现在变量$ mailtemplate包含:
[
'id' => '1'
'title' => 'The subject of the email',
'body' => '<p>The content of the email</p> '
]
然后你可以这样使用它:
Mail::send('email.example', $mailtemplate, function($message) use $mailtemplate
{
$message->subject($mailtemplate['title']);
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com');
});
在您的模板中,您将通过元素名称(id,subject,body)获得变量。