Laravel,我如何覆盖供应商的代码

Laravel 5.1 有这个代码:


public function postEmail(Request $request)

{

    $this->validate($request, ['email' => 'required|email']);


    $response = Password::sendResetLink($request->only('email'), function (Message $message) {

        $message->subject($this->getEmailSubject());

    });


    switch ($response) {

        case Password::RESET_LINK_SENT:

            return redirect()->back()->with('status', trans($response));/*I HAVE TO CHANGE THIS*/

        case Password::INVALID_USER:

            return redirect()->back()->withErrors(['email' => trans($response)]);

    }

}

该代码来自一个特征: app\vendor\laravel\framework\src\Illuminate\Foundation\Auth\ResetsPasswords.php


我需要用另一个代码更改带有注释的行:


return redirect()->route('login')->with(['message' => 'Se ha enviado a su email el link del reseteo, por favor verifique.',]);

但它是一个供应商文件。我怎样才能做到这一点?覆盖另一个文件中的方法?在哪里?


海绵宝宝撒
浏览 183回答 2
2回答

手掌心

一种稍微有点麻烦的解决方案是复制您需要编辑的类,并将其放入somedir/fixed_class.php原始命名空间和类名中。然后添加到 composer.json:"autoload": {     "files": ["somedir/fixed_class.php"]  }但是,您最好以某种方式尝试扩展该类并使用您自己的改进版本(或为原始作曲家模块提交错误修复/功能请求)。

慕虎7371278

该back()函数将检查referer请求中的标头,因此您可以编写一个将其更改为url(route('login')).如果未设置该标头,则可以调用$request->setPreviousUrl(url(route('login')));所以基本上你的中间件代码可以是这样的public function handle($request, Closure $next) {    if (/* request is the reset password */) {        if ($request->headers->has('referer')) {            $request->headers->set('referer', url(route('login')));        } else {            $request->setPreviousUrl(url(route('login')));        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP