Reputation: 1482
I have a page setup to reset the user's email address password and the users zip_code for an application. I have it working correctly however, if for example I want to just change the zip code my validation will not allow it due to it reading the email as already existing in the database and returns an error. What is the best way around this? I could create a controller for each field and do it individually but I feel there is some if statement I could use maybe?
Controller:
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');
}
Unique needs to be in place obviously so it doesn't get matched with another account
Also my email is set through Auth..Auth::user()->email
if that helps
Upvotes: 0
Views: 136
Reputation: 60068
You can set the validation unique rule to ignore the current 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
Upvotes: 1