Php Laravel 7:未定义变量:电子邮件
我想在完成付款后发送一封电子邮件,其中包含来自RegisterController的注册表数据。我的App\Mail\RegisterMail.php代码中不断出现错误 这是my PaymentController.php中的函数,我正试图从中发送邮件:Php Laravel 7:未定义变量:电子邮件,php,laravel,Php,Laravel,我想在完成付款后发送一封电子邮件,其中包含来自RegisterController的注册表数据。我的App\Mail\RegisterMail.php代码中不断出现错误 这是my PaymentController.php中的函数,我正试图从中发送邮件: public function complete(Request $request) { $signatureStatus = $this->SignatureVerify( $reques
public function complete(Request $request)
{
$signatureStatus = $this->SignatureVerify(
$request->all()['rzp_signature'],
$request->all()['rzp_payment_id'],
$request->all()['rzp_order_id']
);
if ($signatureStatus == true) {
$payments = new Payments;
$payments->signature = request('rzp_signature');
$payments->paymentId = request('rzp_payment_id');
$payments->orderId = request('rzp_order_id');
$payments->save();
$user = Auth::user();
$user->isPayment = 1;
$user->save();
// Send mail after payment is complete
Mail::to('test@test.com')->send(new RegisterMail($user->data));
return redirect()->route('dashboard');
} else {
return redirect()->route('payment.initiate');
}
}
这是我的RegisterController.php:
protected function validator(array $data)
{
return Validator::make($data, [
'fname' => ['required', 'string', 'max:255'],
'lname' => ['required', 'string', 'max:255'],
'gender' => ['required', 'string'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'photo' => ['required', 'image', 'mimes:jpeg,jpg', 'max:15000'],
}
protected function create(array $data)
{
$user = User::create([
'fname' => $data['fname'],
'lname' => $data['lname'],
'gender' => $data['gender'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
if (request()->hasFile('photo'))
{
$photo = request()->file('photo')->getClientOriginalName();
request()->file('photo')->storeAs('photos', $user->id . '/' . $photo, '');
$user->update(['photo' => $photo]);
}
//When I try to send mail from here it works without any issues.
//Mail::to('test@test.net')->send(new RegisterMail($data));
return $user;
}
这是我的App\Mail\RegisterMail.php
class RegisterMail extends Mailable
{
use Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
if (Auth::attempt(['email' => $this->data['email'], 'password' => $this->data['password']])) {
$attachments = [
public_path('storage') . '/' . 'photos' . '/' . Auth::user()->id . '/' . Auth::user()->photo,
];
$email = $this->subject('New Registration')->view('register_message')->with('data', $this->data);
foreach ($attachments as $filePath) {
$email->attach($filePath);
}
}
return $email;
}
}
您可以在RegisterController.php中进行重定向,并通过以下方式传递数据:
return redirect()->route('PaymentControllerRouteName',[$data]);
或者简单地创建并触发一个事件(在RegisterController中触发它)。您可以在此处了解有关活动的更多信息:
在这种情况下,我会使用事件,因为它是可重用的。哪一行出现此错误?您对此有什么问题?如果标题中的错误消息适用:您尝试解决它了吗?例如:定义
$data
?我想将所有用户数据连同附件一起从PaymentController.php
发送到电子邮件地址。这是send_mail函数中的一个错误,您使用的$data变量不存在。显然,未定义变量“data”的PHP返回错误只是将PaymentController.PHP中的print_r或var_dump放在$data的第71行之前,并检查它为何未定义。