拉拉维尔验证(唯一规则)



>我使用一个单独的类进行验证,所以它看起来像

class UserValidation {
    protected static $id;
    protected static $rules = [
        'email'    => 'required|email|unique:users,email,{{ self::$id }}',
        'password' => 'required|alpha_dash|min:4',
    ];
    public static function validate($input, $id)
    {
        self::$id = $id;
        return Validator::make($input, self::$rules);
    }
}
所以

想象一下,一个用户只想更新他的密码,所以他更新它>提交,但随后他收到了错误this email is already taken,因为Laravel无法读取{{ self::$id }},那么我该如何解决这样的事情。

这将完成你的把戏

class UserValidation {
    protected static $rules = [
        'email'    => 'required|email|unique:users,email',
        'password' => 'required|alpha_dash|min:4',
    ];
    public static function validate($input, $id = false)
    {
        $rules = self::$rules;
        if ($id) {
            $rules['email'] .= ",$id";
        }
        return Validator::make($input, $rules);
    }
}

如果您传递一个 id,它将附加到规则数组中,如果没有,则将使用一个简单的规则数组。我希望这就是你的意思。

最新更新