Маршрут [пароль.reset] не определено в laravel 5.4 в ResetPasswords.РНР

я получаю эту ошибку в своем пользовательском приложении:

InvalidArgumentException in UrlGenerator.php line 304: 
Route [password.reset] not defined.

Я знаю, что laravel предоставляет функциональность сброса пароля из коробки, но я хочу написать свой собственный класс и маршруты.

вот мои маршруты в интернете.в PHP

// Password reset link request routes...
Route::get('password/email', 'AuthPasswordController@getResetEmail');
Route::post('password/email', 'AuthPasswordController@postResetEmail');

// Password reset routes...
Route::get('password/reset/{token}', 'AuthPasswordController@getReset');
Route::post('password/reset', 'AuthPasswordController@postReset');

и это мой PasswordController:

namespace AppHttpControllersAuth;

use AppHttpControllersController;
use IlluminateContractsAuthGuard;
use IlluminateContractsAuthPasswordBroker;
use IlluminateFoundationAuthResetsPasswords;

class PasswordController extends Controller {



    use ResetsPasswords;

    /**
     * Create a new password controller instance.
     *
     * @param  IlluminateContractsAuthGuard  $auth
     * @param  IlluminateContractsAuthPasswordBroker  $passwords
     * @return void
     */
    public function __construct(Guard $auth, PasswordBroker $passwords)
    {
        $this->auth = $auth;
        $this->passwords = $passwords;
        $this->middleware('guest');
    }
}

это мои ResetPasswords.в PHP черта:

namespace IlluminateFoundationAuth;

use IlluminateHttpRequest;
use IlluminateMailMessage;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesPassword;
use SymfonyComponentHttpKernelExceptionNotFoundHttpException;

trait ResetsPasswords
{
    use RedirectsUsers;

    /**
     * Display the form to request a password reset link.
     *
     * @return IlluminateHttpResponse
     */
    public function getResetEmail()
    {
        return view('public.auth.password');
    }

    /**
     * Send a reset link to the given user.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpRedirectResponse
     */
    public function postResetEmail(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));

            case Password::INVALID_USER:
                return redirect()->back()->withErrors(['email' => trans($response)]);
        }
    }

    /**
     * Get the e-mail subject line to be used for the reset link email.
     *
     * @return string
     */
    protected function getEmailSubject()
    {
        return property_exists($this, 'subject') ? $this->subject : 'Your Password Reset Link';
    }

    /**
     * Display the password reset view for the given token.
     *
     * @param  string  $token
     * @return IlluminateContractsViewFactory|IlluminateViewView
     */
    public function getReset($token = null)
    {
        if (is_null($token)) {
            throw new NotFoundHttpException;
        }

        return view('public.auth.reset')->with('token', $token);
    }

    /**
     * Reset the given user's password.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpRedirectResponse
     */
    public function postReset(Request $request)
    {
        $this->validate($request, [
            'token' => 'required',
            'email' => 'required|email',
            'password' => 'required|confirmed|min:6',
        ]);

        $credentials = $request->only(
            'email', 'password', 'password_confirmation', 'token'
        );

        $response = Password::reset($credentials, function ($user, $password) {
            $this->resetPassword($user, $password);
        });

        switch ($response) {
            case Password::PASSWORD_RESET:
                return redirect($this->redirectPath())->with('status', trans($response));

            default:
                return redirect()->back()
                            ->withInput($request->only('email'))
                            ->withErrors(['email' => trans($response)]);
        }
    }

    /**
     * Reset the given user's password.
     *
     * @param  IlluminateContractsAuthCanResetPassword  $user
     * @param  string  $password
     * @return void
     */
    protected function resetPassword($user, $password)
    {
        $user->password = bcrypt($password);

        $user->save();

        Auth::login($user);
    }
}

проблема в том, когда я нажимаю форму сброса пароля кнопка это приводит к этой ошибке. Я не знаю, в чем проблема, но кажется, что phpstorm не может распознать метод Password:: sendResetLink в классе PasswordBroker и выделяет метод желтым цветом и показывает это сообщение пузыря:

Method sendResetLink not found in IlluminateSupportFacadesPassword
Refreced method is not found in subject class

Я не знаю, какова связь между этим методом и маршруты?

любая помощь будет оценили...

3 ответов


на что Laravel 5.4 sendResetLink имеет только один параметр полномочия

таким образом, вы должны изменить свою реализацию метода на это:

$response = $this->passwords->sendResetLink($request->only('email'));

тогда вы должны поставить обратный вызов User модель (или что именно у вас), что имеет

trait CanResetPassword

эта модель должна иметь способ:

public function sendPasswordResetNotification($token) {
    // do your callback here
}

этим маршрутам нужно имя.

вот код..

// Password reset link request routes...
Route::get('password/email', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.email');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');

// Password reset routes...
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.request');
Route::post('password/reset', 'Auth\ResetPasswordController@postReset')->name('password.reset');

маршрут

{{ route('password.email') }}

возвращает /password/reset/{token}

и по маршруту

{{ route('password.request') }}

возвращает /password/reset

тот, кто написал это, должно быть, действительно устал той ночью, но я думаю, что слишком поздно менять структуру в этот момент