Route Laravel avec variable dans l'URL
-
21-12-2019 - |
Question
J'essaie d'implémenter la logique de réinitialisation du mot de passe.L'utilisateur reçoit le lien pour réinitialiser le mot de passe dans l'e-mail.L'URL ressemble à
http://example.com/reset/resetcode
J'ai défini l'itinéraire pour cela :
Route::get('reset/{resetcode}', function(){
return View::make('users.reset_password');
});
Le formulaire est rendu en vue de soumettre le email, new password
etc.Pour la publication du formulaire, j'ai un itinéraire défini comme :
Route::post('reset/{resetcode}', array( 'as' => 'reset', 'uses' => 'UserController@passwordReset'));
je prends le resetcode
depuis post route
à l'intérieur de passwordReset
contrôleur ci-dessous
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.');
}
Le problème que j'ai, c'est quand je le fais Redirect::route
après l'échec de la validation. je reçois le resetcode
à partir de l'itinéraire défini pour post
.Lorsque la validation échoue, la route de redirection est erronée et je ne parviens pas à obtenir le resetcode
la deuxième fois.L'URL supposée du format
http://example.com/reset/8f1Z7wA4uVt7VemBpGSfaoI9mcjdEwtK8elCnQOb
devient
http://bcnet.org/reset/%7Bcode%7D
Cela a à voir avec /{resetcode}
partie de l'itinéraire et cela est variable, alors comment puis-je obtenir le bon resetcode
même après l'échec de la validation, ce qui signifie que l'URL reste intacte.Ou comment puis-je le réparer de manière appropriée Redirect::route
après l'échec de la validation.
La solution
Vous devez inclure le $resetcode
à ton retour
else return Redirect::route('reset', $resetcode)->withInput()
->withErrors($validation)