我正在尝试通过AJAX发送密码重置链接。我已将sendResetLinkEmail
内的ForgotPasswordController
方法覆盖到以下内容:
public function sendResetLinkEmail()
{
$this->validate(request(), ['email' => 'required|email|exists:users']);
$response = $this->broker()->sendResetLink(
request()->only('email')
);
echo 'test';
}
验证工作完美,如果出现错误,我会收到一个responseJSON。电子邮件无效,电子邮件不存在。我的问题是,当没有验证错误时,我没有得到任何类型的响应。不是test
,而不是任何事情。
当我删除以下内容后,执行得到test
的回复:
$response = $this->broker()->sendResetLink(
request()->only('email')
);
没有意义。
答案 0 :(得分:0)
您应该尝试这可能对您有所帮助!!!
use Illuminate\Http\Request;
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
答案 1 :(得分:0)
问题是它无法连接到SMTP服务器,因此它已挂起。
以下是工作代码:
public function sendResetLinkEmail()
{
$this->validateEmail(request());
$response = $this->broker()->sendResetLink(
request()->only('email')
);
if ($response == Password::RESET_LINK_SENT) {
return response()->json([
'alert' => true,
'alert_message' => 'Password reset link emailed!',
]);
}
else {
return response()->json(['email' => trans($response)], 422);
}
}
我在jQuery代码中使用data.hasOwnProperty('alert')
来确定是否应该在success
AJAX响应时显示警报。