当我试图创建一个邀请并通过邮件发送链接给用户时,我收到了一个错误。我能够成功地发送邮件,成功的创建邀请。但是,当我试图将变量$invitation传递给App\Mail\InvitationCreated时,即使在可邮件(例如__construct(Invitation $invitation) )中初始化变量之后,也会出现错误。
请帮助我理解这里的问题。
App\Models\Invitation
class Invitation extends Model
{
use HasFactory;
protected $fillable = [
'email', 'invitation_token', 'registered_at',
];
public function generateInvitationToken() {
$this->invitation_token = substr(md5(rand(0, 9) . $this->email . time()), 0, 32);
}
public function getLink() {
return urldecode(route('register') . '?invitation_token=' . $this->invitation_token);
}
}App\Http\Livewire\InvitationController
use Illuminate\Support\Facades\Mail;
use App\Models\Invitation;
use App\Mail\InvitationCreated;
class InvitationController extends Component
{
use WithPagination;
public $showEditModal = false;
public Invitation $invitation;
protected $rules = [
'invitation.email' => 'required | email | max:255 | unique:users,email',
];
public function mount()
{
$this->invitation = new Invitation();
}
public function save()
{
$this->validate();
$this->invitation->generateInvitationToken();
$invitation = $this->invitation->save();
$this->showEditModal = false;
Mail::to($this->invitation->email)->send(new InvitationCreated($invitation));
}
}App\Http\Mail\InvitationCreated
use App\Models\Invitation;
class InvitationCreated extends Mailable
{
use Queueable, SerializesModels;
public function __construct(Invitation $invitation)
{
$this->invitation = $invitation;
}
public function build()
{
return $this->from('server@localhost.com')->view('emails.invite-created');
}
}resources\views\emails\invite-created
<p>Hi,</p>
<p>Someone has invited you to access their account.</p>
<a href="{{ $invitation->getLink() }}">Click here</a> to activate!错误,我得到的是
Argument 1 passed to App\Mail\InvitationCreated::__construct() must be an instance of App\Models\Invitation, bool given, called in C:\xampp\htdocs\2020\app\Http\Livewire\Backend\UserManagement\InvitationController.php on line 54发布于 2020-12-03 06:47:12
尝尝这个
Mail::to($this->invitation->email)->send(new InvitationCreated($this->invitation));$invitation到$this->invitation
在$invitation = $this->invitation->save();中,此代码返回真或假数据是否保存。
因此,您可以从公共属性instance of App\Models\Invitation $this->invitation中获取
为了将数据发送到邮件视图,您需要创建公共程序。
use App\Models\Invitation;
class InvitationCreated extends Mailable
{
use Queueable, SerializesModels;
public $invitation;
public function __construct(Invitation $invitation)
{
$this->invitation = $invitation;
}
public function build()
{
return $this->from('server@localhost.com')->view('emails.invite-created');
}
}https://stackoverflow.com/questions/65121067
复制相似问题