url 中带有变量的 Laravel 路由
-
21-12-2019 - |
题
我正在尝试实现密码重置逻辑。用户在电子邮件中获取重置密码的链接。网址看起来像
http://example.com/reset/resetcode
我已经为其定义了路线:
Route::get('reset/{resetcode}', function(){
return View::make('users.reset_password');
});
表单在视图中呈现以提交 email, new password
ETC。对于表单的帖子,我将路线定义为:
Route::post('reset/{resetcode}', array( 'as' => 'reset', 'uses' => 'UserController@passwordReset'));
我抓住了 resetcode
从 post route
在 - 的里面 passwordReset
下面的控制器
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.');
}
我遇到的问题是当我这样做时 Redirect::route
验证失败后。 我正在得到 resetcode
从定义的路线 post
. 。当验证失败时,重定向路由会混乱,我无法获取 resetcode
第二次。假定的格式 url
http://example.com/reset/8f1Z7wA4uVt7VemBpGSfaoI9mcjdEwtK8elCnQOb
变成
http://bcnet.org/reset/%7Bcode%7D
这与 /{resetcode}
路线的一部分,这是可变的,所以我怎样才能得到正确的 resetcode
即使验证失败也意味着 url 保持不变。或者我怎样才能将其修复到适当的位置 Redirect::route
验证失败后。
解决方案
您需要包括 $resetcode
返回时
else return Redirect::route('reset', $resetcode)->withInput()
->withErrors($validation)
不隶属于 StackOverflow