如您所知,通过laravel发送电子邮件非常简单:
// setting data
$data = array(
'band' => 'Kings of leon'
);
// send email
\Mail::send('emails.activation', $data , function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
然后在/app/views/emails/activation.blade.php
视图中可能包含一个不复杂的结构:
My fav band is {{ $band }}. Here a logo:
<img src="{{ $message->embed('/img/logo_small.png') }}" alt="">
观看路径:
/app/config/views.php
'paths'=&gt;数组( DIR 。'/ .. / views',),
以上所有内容都像冠军一样。但是,如果您将电子邮件视图从emails.activation
更改为另一个属于不同路径的默认情况导致两个问题:
$message
var $data
arg未传递给视图。所以,让我们看看:
// setting data
$data = array(
'band' => 'Kings of leon'
);
// send email using different view outside of default path
\Mail::send('theme::views.emails.activation', $data , function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
视图已成功找到,但在编译时会抛出两个异常,说明undefined var: $message
和undefined var: $band
。
我错过了额外的配置吗?还是一个bug?谢谢。
经过详尽的修订后,问题在于在同一个控制器中调用两次电子邮件视图,例如:
$stringLocation = \Theme::getViewLocation('emails.activation');
... more stuff here
\Mail::send($stringLocation, $data , function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
因此,调用getViewLocation()
编译了视图,当然,数据并不存在于这一点上。我的错误是认为错误在\Mail::send
行而不是getViewLocation
。