如何在Laravel 4中强制使用唯一规则忽略特定用户?

时间:2014-11-20 15:52:07

标签: laravel laravel-4

在我的设置密码视图中,我想允许用户编辑自己的用户名和电子邮件。

在我的控制器中,我强制我的验证忽略具有相同激活码的用户的验证。

我仍然收到错误消息。我知道,我错过了一步,我不知道如何解决这个问题。

你能给我一个快速提示或指出我错过的东西吗?

我已经尝试过了,这就是我想出的。

代码

public function postSetPassword(){

        $user = User::where('code','=', Input::get('code'))->firstOrFail();
        $code = $user->code;
        $validator = Validator::make(Input::all(), array(

            'password'          =>'required|min:6',
            'password_again'    =>'required|same:password',
            'logo_path'         =>'max:255',

            'username'  =>'required|unique:users,username,'. $code,
            'email'     =>'required|email|unique:users,email,'. $code,

          ... more ...

Image

1 个答案:

答案 0 :(得分:0)

可能有很多方法可以做到这一点,但我想到的就是这个。如果用户没有更改用户名或电子邮件,请不要验证用户名或电子邮件。

$user = User::where('code','=', Input::get('code'))->firstOrFail();
$validationRules = array(
    'password'          =>'required|min:6',
    'password_again'    =>'required|same:password',
    'logo_path'         =>'max:255'
);

if($user->email != Input::get('email')){
    $validationRules['email'] = 'required|email|unique:users,email';
}
if($user->username != Input::get('username')){
    $validationRules['username'] = 'required|unique:users,username';    
}

$validator = Validator::make(Input::all(), $validationRules);