Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Substituição de mensagens de erro #133

Open
BaraoVlask opened this issue Nov 22, 2022 · 2 comments
Open

Substituição de mensagens de erro #133

BaraoVlask opened this issue Nov 22, 2022 · 2 comments

Comments

@BaraoVlask
Copy link

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
            );
        }

$this->app['validator']
->resolver(
function ($translator, $data, $rules, $messages, $attributes) use ($me, $validatorFormats) {
$messages += $me->getMessages();
return new Validator($translator, $validatorFormats, $data, $rules, $messages, $attributes);
}
);

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
Copy link
Author

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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants