我使用单独的类进行验证,因此它看起来像
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 }}
,所以我该如何解决这样的问题。
答案 0 :(得分:1)
这会做你的伎俩
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,它将附加到rules数组中,否则将使用简单的规则数组。我希望这就是你的意思。