Skip to content

Substituição de mensagens de erro #133

Open
@BaraoVlask

Description

@BaraoVlask

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

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions