Route [- Passwort.reset] nicht definiert ist in laravel 5.4 ResetPasswords.php
Ich bin immer diese Fehlermeldung auf meiner eigenen app:
InvalidArgumentException in UrlGenerator.php line 304:
Route [password.reset] not defined.
Ich weiß, laravel bietet einen Passwort-reset-Funktionalität out of the box, aber ich will das schreiben meiner eigenen Klasse und Routen.
Hier meine Routen in web.php
//Password reset link request routes...
Route::get('password/email', 'Auth\PasswordController@getResetEmail');
Route::post('password/email', 'Auth\PasswordController@postResetEmail');
//Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
Und das ist mein PasswordController:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords;
/**
* Create a new password controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
* @return void
*/
public function __construct(Guard $auth, PasswordBroker $passwords)
{
$this->auth = $auth;
$this->passwords = $passwords;
$this->middleware('guest');
}
}
Das ist mein ResetPasswords.php Merkmal:
namespace Illuminate\Foundation\Auth;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Password;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
trait ResetsPasswords
{
use RedirectsUsers;
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function getResetEmail()
{
return view('public.auth.password');
}
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
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 \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
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 \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
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 \Illuminate\Contracts\Auth\CanResetPassword $user
* @param string $password
* @return void
*/
protected function resetPassword($user, $password)
{
$user->password = bcrypt($password);
$user->save();
Auth::login($user);
}
}
Das problem ist, wenn ich drücken Sie die Passwort-zurücksetzen-Schaltfläche führt zu diesem Fehler. Ich weiß nicht, was das problem ist, aber es scheint phpstorm nicht erkennen kann, das Passwort::sendResetLink Methode in PasswordBroker Klasse und hebt die Methode mit gelber Farbe und zeigt diese Blase Meldung:
Method sendResetLink not found in Illuminate\Support\Facades\Password
Refreced method is not found in subject class
Ich weiß nicht, was ist die Beziehung zwischen Methode und Routen?
Jede Hilfe würde geschätzt...
InformationsquelleAutor Salar Bahador | 2017-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der laravel 5.4
sendResetLink
hat nur einen parameter AnmeldeinformationenDamit Sie eine änderung an der Methode der Umsetzung:
Dann Sie haben um Rückruf
User
Modell (oder was genau), dass hatDiesem Modell muss Methode:
InformationsquelleAutor Alex Slipknot
diese Routen einen Namen brauchen.
Hier der code..
password.reset
undpassword.request
. Sollten Sie umgedreht werden hier - ansonsten bekommst du einen ungültigen link in Ihrer E-Mail mit einem ? für token.InformationsquelleAutor a3rxander
Route
zurück
/password/reset/{token}
und route
zurück
/password/reset
Wer dies schrieb, muss schon wirklich müde, die Nacht, aber ich denke, es ist zu spät, um ändern Sie den Rahmen an dieser Stelle
InformationsquelleAutor Arthur Tarasov
Wenn Ihr reset-link enthält localhost in der url, denken Sie daran, ändern Sie die APP_URL auf die .env-Datei und dann ausführen von: php artisan config:klar
InformationsquelleAutor JavierE