gpt4 book ai didi

php - 在 Laravel 8 中调用 null 上的成员函数 notify()

转载 作者:行者123 更新时间:2023-12-04 17:22:45 27 4
gpt4 key购买 nike

我想向手机发送短信(如果他已经打开了双因素身份验证系统)。
所以在 LoginController我添加了这个方法:

protected function authenticated(Request $request, $user)
{
return $this->loggendin($request , $user);
}
还有这个 loggendin方法位于名为 TwoFactorAuthentication 的特征内,它是这样的:
trait TwoFactorAuthenticate
{
public function loggendin(Request $request , $user)
{
if($user->hasTwoFactorAuthenticatedEnabled()) {
auth()->logout();

$request->session()->flash('auth' , [
'user_id' => $user->id,
'using_sms' => false,
'remember' => $request->has('remember')
]);


if($user->two_factor_type == 'sms') {
$code = ActiveCode::generateCode($user);
// Todo Send Sms
$request->user()->notify(new ActiveCodeNotification($code , $user->phone_number));

$request->session()->push('auth.using_sms' , true);
}

return redirect(route('twofa.token'));
}

return false;
}
}
现在的问题是,当我想登录时,屏幕上会出现以下消息:

Error Call to a member function notify() on null


这是指这一行:
$request->user()->notify(new ActiveCodeNotification($code , $user->phone_number));
还有这个 ActiveCodeNotification保存一些发送短信的设置。
如果你想参观,这里是:
class ActiveCodeNotification extends Notification
{
use Queueable;

public $code;

public $phoneNumber;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($code , $phoneNumber)
{
$this->code = $code;
$this->phoneNumber = $phoneNumber;
}

/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [GhasedakChannel::class];
}


public function toGhasedakSms($notifiable)
{
return [
'text' => "{$this->code}",
'number' => $this->phoneNumber
];
}
}
那么这里出了什么问题,我在 null 上调用成员函数 notify() 而它的两个参数有值。
所以如果你知道,请告诉我。我真的很感激你们的任何想法......
谢谢。

最佳答案

试试这个:
首先,确保您的 User 模型具有 Notifiable 特征。
用户模型类的顶部:

use Illuminate\Notifications\Notifiable;
在那之后:
class User extends Model{
use Notifiable; // ....
接着...
代替
$request->user()->notify(new ActiveCodeNotification($code , $user->phone_number));
用这个
$user->notify(new ActiveCodeNotification($code, $user->phone_number));
或者
在调用 auth()->logout(); 之前;
首先使用它:
auth()->user()->notify(new ActiveCodeNotification($code, $user->phone_number));
然后,您可以调用 auth()->logout();
最近为我工作

关于php - 在 Laravel 8 中调用 null 上的成员函数 notify(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com