Ruta laravel con variable en la url
-
21-12-2019 - |
Pregunta
Estoy intentando implementar la lógica de restablecimiento de contraseña.El usuario recibe el enlace para restablecer la contraseña en el correo electrónico.La URL parece
http://example.com/reset/resetcode
Tengo la ruta definida para ello:
Route::get('reset/{resetcode}', function(){
return View::make('users.reset_password');
});
El formulario se presenta en la vista para enviar el email, new password
etc.Para el post del formulario tengo ruta definida como:
Route::post('reset/{resetcode}', array( 'as' => 'reset', 'uses' => 'UserController@passwordReset'));
agarro el resetcode
de post route
dentro de passwordReset
controlador a continuación
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.');
}
El problema que tengo es cuando lo hago. Redirect::route
después de que falle la validación. estoy consiguiendo el resetcode
de la ruta definida para post
.Cuando la validación falla, la ruta de redireccionamiento se estropea y no puedo obtener el resetcode
la segunda vez.La supuesta URL de formato.
http://example.com/reset/8f1Z7wA4uVt7VemBpGSfaoI9mcjdEwtK8elCnQOb
se convierte
http://bcnet.org/reset/%7Bcode%7D
Que tiene que ver con /{resetcode}
parte de la ruta y esto es variable, entonces, ¿cómo puedo obtener la ruta correcta? resetcode
incluso después de que la validación falle, lo que significa que la URL permanece intacta.¿O cómo puedo solucionarlo en el momento apropiado? Redirect::route
después del error de validación.
Solución
Necesitas incluir el $resetcode
a tu regreso
else return Redirect::route('reset', $resetcode)->withInput()
->withErrors($validation)