Laravel, как я могу переписать код от поставщика - PullRequest
1 голос
/ 24 мая 2019

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.',]);

Но это файл поставщика.Как я могу это сделать?переписать метод в другой файл?где?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Одно слегка хакерское решение - скопировать класс, который нужно отредактировать, и поместить его в somedir/fixed_class.php с исходным пространством имен и именем класса.Затем добавьте в composer.json:

"autoload": {
     "files": ["somedir/fixed_class.php"]
  }

Однако вам лучше как-нибудь попытаться расширить класс и использовать собственную улучшенную версию (или отправить запрос на исправление / добавление функции для исходного модуля composer).

0 голосов
/ 24 мая 2019

Функция back() будет проверять заголовок referer в запросе, поэтому вы можете написать промежуточное программное обеспечение, которое изменит это на url(route('login')).

Если этот заголовок не установлен, вы можете позвонить $request->setPreviousUrl(url(route('login')));

Таким образом, ваш код Middleware может выглядеть примерно так

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')));
        }

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...