Laravel ResetsPasswords Trait

时间:2016-01-21 17:04:47

标签: laravel

在本地,我已经更新了这个特性,在用户提交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...
}

1 个答案:

答案 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属性。