覆盖sendResetLinkEmail不返回任何内容

时间:2017-08-26 00:40:30

标签: php laravel

我正在尝试通过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')
);

没有意义。

2 个答案:

答案 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响应时显示警报。