私は Mail::queue() をしようとしていますが、これが私がやっていることです:
これは私の電子メールを送信するクラスです
class Email {
public static function send($user, $view, $subject) {
Mail::queue($view, array('user' => $user), function($m) use ($user, $subject) {
$m->to($user->email)->subject($subject);
});
Log::info("Mail [$subject] sent to $user->email");
}
}
これは、marshal() を呼び出す人です。
class QueueController extends BaseController {
public function push()
{
Log::info('[queue.push] Queue::marshal() called');
return Queue::marshal();
}
}
これは私がそれを呼んでいる方法です:
Email::send($user, 'site.users.emailRegistered', 'Activate your account');
これは、電子メール メッセージとしてレンダリングしようとしているビューです。
<!DOCTYPE html>
<html lang="en-US">
<head><meta charset="utf-8"></head>
<body>
<h2>Hi,</h2>
<div>
Please, click the link to activate your account: {{ URL::route('activate', array($user->id,$user->getActivationCode())) }}
</div>
</body>
</html>
問題は、Mail::send() が正常に動作することですが、Mail::queue() を使用して marshal() が起動されると、「オブジェクト以外のプロパティを取得しようとしています」に関連するエラー行がログに大量に記録されます。
インスタンス化されたモデルをデータに渡しているため、明らかにデータが正しくシリアル化されていませんが、正しくシリアル化するにはどうすればよいですか?
私はすでに $data 配列を作成し、その上にすべてを配置してから、それを Mail::queue() に渡そうとしましたが、うまくいきませんでした。