Php Laravel 7:未定义变量:电子邮件

Php Laravel 7:未定义变量:电子邮件,php,laravel,Php,Laravel,我想在完成付款后发送一封电子邮件,其中包含来自RegisterController的注册表数据。我的App\Mail\RegisterMail.php代码中不断出现错误 这是my PaymentController.php中的函数,我正试图从中发送邮件: public function complete(Request $request) { $signatureStatus = $this->SignatureVerify( $reques

我想在完成付款后发送一封电子邮件,其中包含来自RegisterController的注册表数据。我的App\Mail\RegisterMail.php代码中不断出现错误

这是my PaymentController.php中的函数,我正试图从中发送邮件:

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行之前,并检查它为何未定义。