Php 尝试在Laravel 5.5中设置更新用户密码的新通知
因此,我试图在用户更新密码时发送自定义通知。SendPasswordResetEmails.php文件位于供应商文件夹中,据我所知,我不应该直接修改那里的代码,因为它可以在更新中更改,等等。因此,我制作了一个名为ChangePasswordController.php的控制器,并复制粘贴了SendPasswordResetEmails.php中用于发送重置链接电子邮件的一些方法 在我的新控制器中,我有以下功能:Php 尝试在Laravel 5.5中设置更新用户密码的新通知,php,laravel,notifications,Php,Laravel,Notifications,因此,我试图在用户更新密码时发送自定义通知。SendPasswordResetEmails.php文件位于供应商文件夹中,据我所知,我不应该直接修改那里的代码,因为它可以在更新中更改,等等。因此,我制作了一个名为ChangePasswordController.php的控制器,并复制粘贴了SendPasswordResetEmails.php中用于发送重置链接电子邮件的一些方法 在我的新控制器中,我有以下功能: /** * Send a change link to the given use
/**
* 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在供应商文件夹中,你能给我举个例子说明我将如何扩展它吗?比如,我应该在哪个文件夹中创建新类?我仔细阅读了文档,但不清楚如何进行。是否要更改邮件标记?除了更多功能外,我还想更改邮件标记。我想把它做好,而不仅仅是把它砍掉。不过,邮件标记并不是我最关心的问题,这一部分相对容易。基本上我希望有一个新方法的密码代理。我不清楚如何设置这个。