我正在尝试添加一个额外的验证规则,以检查以确保用户名是单词。我这样创建了一个新规则(SingleWord):
public function passes($attribute, $value)
{
$dd = strpos(trim($value), ' ');
if($dd !== false){
return false;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Username must be one word';
}
我现在将此规则添加到验证器中,如下所示:
$validator = Validator::make($data, [
'name' => 'required|string|max:255|unique:merchants',
'email' => 'required|string|email|max:255|unique:merchants',
'password' => 'required|string|min:6',
'username' => 'required|string|unique:merchants',
'username' => [new SingleWord]
],[
'name.required' => "Company name is required",
]);
return $validator;
但是,即使我输入一个单词,验证器也会返回错误消息。请问这里可能有什么问题吗?
答案 0 :(得分:2)
您忽略了肯定的情况。试试这个:
public function passes($attribute, $value)
{
$dd = strpos(trim($value), ' ');
if($dd !== false){
return false;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Username must be one word';
}
答案 1 :(得分:1)
在不知道您的错误消息的情况下,我将建议您进行一些更改,首先在验证中,您可以将passes
方法更改为此:
public function passes($attribute, $value)
{
return !strpos(trim($value), ' ');
}
然后进行验证,您只能使用这样的一个键:
'username' => ['required', 'string', 'unique:merchants' , new SingleWord]