【问题标题】:Laravel ResetsPasswords TraitLaravel 重置密码特征
【发布时间】:2016-01-21 17:04:46
【问题描述】:

在本地,我已更新此 trait 以在用户提交 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...
}

【问题讨论】:

    标签: laravel


    【解决方案1】:

    由于您所说的原因,您不应该更改 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 属性。

    【讨论】:

    • 好的,谢谢您的确认。请参阅上面的更新。
    • 所以,我确实将重定向路径(一旦用户完成重置密码)更改为“/main”网址。我想要的另一个更改(这就是我最初更改 trait 的原因)是,一旦用户提交 getEmail() 方法,使用 Flash 消息将它们重定向回同一页面。
    • 是的,要添加 Flash 消息,您必须在控制器中覆盖 trait 的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2017-08-04
    • 2020-10-01
    • 1970-01-01
    • 2014-07-24
    • 2016-07-11
    • 2016-03-30
    相关资源
    最近更新 更多