在本地,我已经更新了这个特性,在用户提交getEmail()方法请求重置密码链接后进行一些不同的重定向。当推向生产时,我的版本不在那里。我猜这是因为ResetsPasswords特征在laravel框架中,它与我在服务器上的存储库分开安装。
如果是这种情况,那么改变ResetsPasswords特征功能的最佳方法是什么。我是否自己创建并将其包含在存储库中并更改我的控制器?下面是PasswordController。
谢谢!
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
protected $redirectPath = '/main';
/**
* Create a new password controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}
更新:因此,在ResetsPasswords特征中,我修改了重定向getSendResetLinkEmailSuccessResponse()方法。那么,我只是将该方法放在我的控制器(具有相同的名称)和我编辑的代码中吗?
protected function getSendResetLinkEmailSuccessResponse($response)
{
...modified code...
}
答案 0 :(得分:3)
出于您所说的原因,您不应该对Laravel供应商文件进行更改。
相反,您应该覆盖控制器中需要修改的任何特征函数。
所以只需将修改后的代码添加到控制器中,如下所示:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords;
protected $redirectPath = '/main';
public function __construct() {
$this->middleware('guest');
}
protected function getSendResetLinkEmailSuccessResponse($response) {
// modified code that sends an awesome flash message
}
}
此外,如果您要做的只是更改用户重定向到的位置,那么您根本不必覆盖这些功能。您所要做的就是更改控制器中的redirectPath
属性。