geekcom / validator-docs

Validação de CPF, CNPJ, CNH, NIS, DDD, Título Eleitoral e Cartão Nacional de Saúde com Laravel.
MIT License
564 stars 96 forks source link

Substituição de mensagens de erro #133

Open BaraoVlask opened 1 year ago

BaraoVlask commented 1 year ago

A lib está retornando que o CPF 29075 é invalido, quando o CPF na verdade está duplicado no banco de dados

'cpf' => ['required', 'cpf', Rule::unique('users')->whereNull('deleted_at')],

php: ^8.1 -> 8.1.12 laravel/framework: ^9.19 -> 9.31.0 geekcom/validator-docs: ^3.7 -> 3.7.1

   $validationRules = [
            'name' => 'required',
            'cpf' => ['required', 'cpf', Rule::unique('users')->whereNull('deleted_at')],
            'cell_phone' => 'required|regex:/\([0-9]{2}\) 9[0-9]{2}\.[0-9]{3}\.[0-9]{3}/',
            'birth_date' => 'required|date_format:d/m/Y',
            'email' => [
                'required',
                'email:rfc,dns,spoof,filter',
                function ($attribute, $value, $fail) {
                    $exists = User::where('email', Str::lower($value))
                        ->whereNull('deleted_at')
                        ->exists();
                    if ($exists) {
                        $fail("O {$attribute} informado, já está em uso!");
                    }
                },
            ],
            'password' => $this->storePasswordRules(),
        ];
        $validator = Validator::make(
            $request->all(),
            $validationRules,
            ['cell_phone.regex' => 'O campo celular não é valido!']
        );
        $validator->setAttributeNames(
            [
                'cpf' => 'Cadastro de Pessoa Física',
                'name' => 'nome',
                'email' => 'e-mail',
                'password' => 'senha',
                'cell_phone' => 'celular',
                'birth_date' => 'data de nascimento',
            ]
        );

        if ($validator->fails()) {
            return $this->response(
                $validator->errors()->toArray(),
                'Erro',
                HttpStatusCodeEnum::UnprocessableContent
            );
        }

https://github.com/geekcom/validator-docs/blob/19ebbc9452aeb6fd88c6770ca3bc72b4e094263d/src/validator-docs/ValidatorProvider.php#L27-L34

Erro aconte pois ao chamar o método make do validator ele chama o metodo resolve (referencia acima) as mesagens são substituidadas o por que que as mensagens são substituidas eu não entendi, já que se comentar o código citado resolve o problema.

PS. Vou abrir outra issue para sugerir algumas mudanças

BaraoVlask commented 1 year ago

O erro tambem ocorre quando a validação é no formato a seguir

       $this->validate(
            $request,
           $validationRules,
           ['cell_phone.regex' => 'O campo celular não é valido!'],
            [
                'cpf' => 'CPF (Cadastro de Pessoa Física)',
                'name' => 'nome',
                'email' => 'e-mail',
                'password' => 'senha',
                'cell_phone' => 'celular',
                'birth_date' => 'data de nascimento',
            ]
        );
Kh4os-afk commented 6 months ago

Amigo, alguma atualização sobre ? Qualquer mensagem do validador sai com CPF é Invalido quando utiliza a biblioteca