Laravel-Route mit Variable in der URL
-
21-12-2019 - |
Frage
Ich versuche, die Passwort-Reset-Logik zu implementieren.Der Benutzer erhält den Link zum Zurücksetzen des Passworts in der E-Mail.Die URL sieht aus wie
http://example.com/reset/resetcode
Ich habe die Route dafür definiert:
Route::get('reset/{resetcode}', function(){
return View::make('users.reset_password');
});
Das Formular wird in der Ansicht zum Senden gerendert email, new password
usw.Für den Beitrag des Formulars habe ich die Route wie folgt definiert:
Route::post('reset/{resetcode}', array( 'as' => 'reset', 'uses' => 'UserController@passwordReset'));
Ich schnappe mir das resetcode
aus post route
im Inneren passwordReset
Controller unten
public function passwordReset($resetcode)
{
$validation = Validator::make(Input::all(), UserModel::$rulesPasswordReset);
if ($validation->passes())
{
try
{
// Find the user using the user email address
$user = Sentry::findUserByLogin(Input::get('email'));
// Check if the reset password code is valid
if ($user->checkResetPasswordCode($resetcode))
{
// Attempt to reset the user password
if ($user->attemptResetPassword($resetcode, 'new_password'))
{
// Password reset passed
}
else
{
// Password reset failed
}
}
else
{
// The provided password reset code is Invalid
}
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
echo 'User was not found.';
}
}
else return Redirect::route('reset')->withInput()
->withErrors($validation)
->with('title', 'resetrequestfailure')
->with('message', 'Seems like you made some errors.');
}
Das Problem, das ich habe, ist, wenn ich es tue Redirect::route
nachdem die Validierung fehlgeschlagen ist. Ich bekomme das resetcode
von der für definierten Route post
.Wenn die Validierung fehlschlägt, ist die Umleitungsroute fehlerhaft und ich kann sie nicht abrufen resetcode
das zweite Mal.Die angebliche URL des Formats
http://example.com/reset/8f1Z7wA4uVt7VemBpGSfaoI9mcjdEwtK8elCnQOb
wird
http://bcnet.org/reset/%7Bcode%7D
Es hat mit ... zu tun /{resetcode}
Teil der Route und dieser ist variabel. Wie kann ich also das Richtige finden? resetcode
Auch wenn die Validierung fehlschlägt, bleibt die URL intakt.Oder wie kann ich es entsprechend beheben Redirect::route
nach dem Validierungsfehler.
Lösung
Sie müssen die einschließen $resetcode
bei Ihrer Rückkehr
else return Redirect::route('reset', $resetcode)->withInput()
->withErrors($validation)