Ошибка реализации пользовательской проверки в Laravel - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь добавить дополнительное правило проверки, которое проверяет, является ли имя пользователя словом. Я создал новое правило (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;

Но валидатор возвращает сообщение об ошибке, даже когда я ввожу одно слово. Пожалуйста, что здесь может быть не так?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы пропустили утвердительный случай. Попробуйте это:

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';
    }
0 голосов
/ 29 октября 2018

Не зная вашего сообщения об ошибке, я предложу пару изменений, во-первых, в вашей проверке вы можете изменить passes метод на этот:

public function passes($attribute, $value)
{ 
    return !strpos(trim($value), ' ');
}

и после проверки вы можете использовать только один ключ, подобный этому:

'username' => ['required', 'string', 'unique:merchants' , new SingleWord]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...