将数据传递到自定义电子邮件视图不可用

时间:2014-10-17 00:31:13

标签: php laravel-4

如您所知,通过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: $messageundefined 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

0 个答案:

没有答案