Php 尝试在Laravel 5.5中设置更新用户密码的新通知

Php 尝试在Laravel 5.5中设置更新用户密码的新通知,php,laravel,notifications,Php,Laravel,Notifications,因此,我试图在用户更新密码时发送自定义通知。SendPasswordResetEmails.php文件位于供应商文件夹中,据我所知,我不应该直接修改那里的代码,因为它可以在更新中更改,等等。因此,我制作了一个名为ChangePasswordController.php的控制器,并复制粘贴了SendPasswordResetEmails.php中用于发送重置链接电子邮件的一些方法 在我的新控制器中,我有以下功能: /** * Send a change link to the given use

因此,我试图在用户更新密码时发送自定义通知。SendPasswordResetEmails.php文件位于供应商文件夹中,据我所知,我不应该直接修改那里的代码,因为它可以在更新中更改,等等。因此,我制作了一个名为ChangePasswordController.php的控制器,并复制粘贴了SendPasswordResetEmails.php中用于发送重置链接电子邮件的一些方法

在我的新控制器中,我有以下功能:

/**
 * Send a change link to the given user.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
 */
public function changePassword(Request $request) {
    $request['email'] = Auth::user()->email;
    $request['update'] = true; // user wishes to update/change their password

    $response = $this->broker()->sendResetLink( 
        ['email' => Auth::user()->email] 
    );

    return $response == Password::RESET_LINK_SENT
                ? $this->sendResetLinkResponse($response)
                : $this->sendResetLinkFailedResponse($request, $response);
}

/**
 * Get the response for a successful password reset link.
 *
 * @param  string  $response
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
 */
protected function sendResetLinkResponse($response)
{
    return back()->with('status', trans($response));
}

/**
 * Get the response for a failed password reset link.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  string  $response
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
 */
protected function sendResetLinkFailedResponse(Request $request, $response)
{
    return back()->withErrors(
        ['email' => trans($response)]
    );
}

/**
 * Get the broker to be used during password reset.
 *
 * @return \Illuminate\Contracts\Auth\PasswordBroker
 */
public function broker()
{
    return Password::broker();
}
在changePassword方法中,请注意sendResetLink中的行:

$response = $this->broker()->sendResetLink( 
    ['email' => Auth::user()->email] 
);

如何创建自定义方法sendChangeLink而不是sendResetLink?我不太明白$this->broker()部分是如何工作的,所以我不想弄乱它,但也许这里有人能帮上忙。

SendsPasswordResetEmails是一种特性,您可以覆盖任何方法,无需复制整个文件。如果您只想更改邮件,请运行php artisan vendor:publish--tag=laravel mail并在resources/views/vendor/mail文件夹中更新邮件标记。-我并不是要重写这个方法。我想扩展它,并改变电子邮件和它的处理方式。我需要做一些定制,因为我需要比所提供的更多的功能。既然SendsPasswordResetEmails在供应商文件夹中,你能给我举个例子说明我将如何扩展它吗?比如,我应该在哪个文件夹中创建新类?我仔细阅读了文档,但不清楚如何进行。是否要更改邮件标记?除了更多功能外,我还想更改邮件标记。我想把它做好,而不仅仅是把它砍掉。不过,邮件标记并不是我最关心的问题,这一部分相对容易。基本上我希望有一个新方法的密码代理。我不清楚如何设置这个。