我有一个会话,其中包含我在控制器中通过多种方法访问的一些数据,没有任何问题。但是一种方法尤其存在问题。
我做了一个小预订系统。完成预订后,我打电话给我自己和客户发送电子邮件:
public function complete(Request $request)
{
$details = Session::get('details');
// send emails: call sendConfirmationEmail(to address, using this view)
$this->sendConfirmationEmail(env('EMAIL'), 'emails.ourconfirmation');
$this->sendConfirmationEmail($details->booker_email, 'emails.bookerconfirmation');
return view('booking/complete');
}
private function sendConfirmationEmail($to,$view)
{
$from = env('OFFICE_EMAIL');
$to_address = $to;
$details = Session::get('details');
$instance = Session::get('instance');
Mail::queue($view, compact(['details','instance']), function($message) use ($to){
$message->from(env('OFFICE_EMAIL'))
->to($to)
->subject('Thanks for booking');
});
}
首先,我在电子邮件视图中访问非对象时遇到错误。所以为了测试它,我只需将sendConfirmationEmail
函数设置为返回$instance
- 空白页面。然后我通过在complete()
中注释函数调用并在那里返回$instance
来测试它。没问题,这里有一个充满数据的闪亮会议。然后我尝试将$instance
从complete()
传递到sendConfirmationEmail()
并将其返回:再次,空白页。为什么不能sendConfirmationEmail
看到'我的会议?!
答案 0 :(得分:0)
据我所知,Sessions用于跨HTTP请求,而不是跨PHP的函数。您正在尝试使用Sessions作为全局变量。
您只需在details
函数中捕获instance
和complete
会话数据,然后将它们作为sendConfirmationEmail()
函数的参数传递。