重置电子邮件/密码

时间:2013-08-27 02:31:23

标签: php laravel laravel-4

我有一个页面设置来重置用户的电子邮件地址密码和用户zip_code的应用程序。我有它正常工作,但是,例如,如果我想只更改邮政编码,我的验证将不允许它,因为它读取已存在于数据库中的电子邮件并返回错误。围绕这个最好的方法是什么?我可以为每个字段创建一个控制器并单独执行,但我觉得我可以使用一些if语句吗?

控制器:

enter        
public function getEditUser() {
    $userdata = array(
        'email'            => Input::get('email'),
        'password'         => Input::get('password'),
        'confirm_password' => Input::get('confirm_password'),
        'user_zip_code'    => Input::get('user_zip_code')
    );

    $rules = array(
        'email'            => 'required|email|unique:users,email',
        'password'         => 'required|min:5',
        'confirm_password' => 'required|same:password',
        'user_zip_code'    => 'required'
    );

    $validation = Validator::make($userdata, $rules);
    if ($validation->fails()) {
        return Redirect::to('dashboard/edit/account')->withErrors($validation)       
            ->withInput();
    }

    $userdata['password']         = Hash::make($userdata['password']);
    $userdata['confirm_password'] = Hash::make($userdata['confirm_password']);

    User::find(Auth::user()->id)->update($userdata);

    return Redirect::to('dashboard');
} 

明显需要独特的需求,以免与其他帐户匹配

此外,我的电子邮件是通过验证设置的。Auth::user()->email如果有帮助

1 个答案:

答案 0 :(得分:1)

您可以设置验证唯一规则以忽略当前ID

$rules = array(
                'email' => 'required|email|unique:users,email,'.Auth::user()->id,
                'password' => 'required|min:5',
                'confirm_password' => 'required|same:password',
                'user_zip_code' => 'required'
            );

See here for more info from the docs