我正在创建两个不同的注册(针对管理员和用户)。但是验证器中的username-> unique仅适用于表用户。
protected function validator(array $data)
{
return Validator::make($data, [
'firstname' => ['required', 'string', 'max:255', 'min:3'],
'middlename' => ['required', 'string', 'max:255', 'min:3'],
'lastname' => ['required', 'string', 'max:255', 'min:3'],
'username' => ['required', 'string', 'max:255', 'min:3', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
]);
}
从users表中验证用于注册用户的唯一用户名,并从admins表中验证用于注册管理员的唯一用户名。
答案 0 :(得分:0)
您可以使用route name中的current request或类似的东西来确定必须使用哪些规则。
protected function validator(array $data)
{
$route = Request::route()->getName();
$rules = [
'firstname' => ['required', 'string', 'max:255', 'min:3'],
'middlename' => ['required', 'string', 'max:255', 'min:3'],
'lastname' => ['required', 'string', 'max:255', 'min:3'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
];
// whatever your route name or identifier to differentiate between
// user and admin registration may be.
if ($route === 'registration.user') {
$rules = $rules + [
'username' => ['required', 'string', 'max:255', 'min:3', 'unique:users'],
];
}
return Validator::make($data, $rules);
}
答案 1 :(得分:0)
验证器仅应验证数据,将其与有关路线等的概念耦合在一起是很不好的。
我将创建一个自定义的Validator类,该类将以表名作为参数。
然后,您可以在控制器中使用正确的表参数实例化该验证器(它将知道路由,请求等...)