Laravel MailEclipse包报错:ChangeEmailRequest构造函数参数不足
Laravel MailEclipse 包构造函数参数缺失报错解决
Bug描述
Too few arguments to function App\Mail\ChangeEmailRequest::__construct(), 0 passed in D:\Laravel\grand\grandcalendar-api\vendor\qoraiche\laravel-mail-editor\src\MailEclipse.php on line 796 and exactly 2 expected
基于已有邮件类安装MailEclipse包后,访问对应页面触发此错误。
复现步骤
- 安装应用
- 访问
/maileclipse/mailables - 触发报错
环境版本
Laravel版本:9.19
依赖版本:
"php": "^8.0.2", "guzzlehttp/guzzle": "^7.2", "intervention/image": "^2.7", "laravel/framework": "^9.19", "laravel/horizon": "^5.14", "laravel/sanctum": "^3.2", "laravel/telescope": "^4.13", "laravel/tinker": "^2.7", "league/flysystem-aws-s3-v3": "^3.0", "paytabscom/laravel_paytabs": "^1.4", "predis/predis": "~1.0", "qoraiche/laravel-mail-editor": "^4.0", "spatie/laravel-activitylog": "^4.7",
MailEclipse包版本:4.0
问题分析与解决
原ChangeEmailRequest邮件类的构造函数要求必须传入2个参数:
<?php namespace App\Mail; use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Content; use Illuminate\Queue\SerializesModels; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Contracts\Queue\ShouldQueue; class ChangeEmailRequest extends Mailable { use Queueable, SerializesModels; public $otp; public $userName; /** * Create a new message instance. * * @return void */ public function __construct($otp, $userName) { $this->otp = $otp; $this->userName = $userName; } // 其余方法省略 }
MailEclipse包在加载邮件类时会无参实例化该类,导致参数缺失报错。为构造函数参数添加默认值null即可解决问题:
/** * Create a new message instance. * * @return void */ public function __construct($otp = null, $userName= null) { $this->otp = $otp; $this->userName = $userName; }
内容的提问来源于stack exchange,提问作者Ahmed Mamdouh
相关产品推荐
相关产品推荐

