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
566 stars 96 forks source link

Qdo o campo não é requerido e vem em branco gera erro #111

Closed dimasf-dev closed 3 years ago

dimasf-dev commented 3 years ago

Olá, na minha aplicação exijo o cpf/cnpj, apenas se um outro determinado campo tiver um valor específico, e nesse caso uso dessa forma:

'cpf_cnpj' => 'required_if:tipo_cobranca,1,2|cpf_cnpj'

O problema é que ele está validando com o campo em branco.

No caso eu acredito que a validação tenha de ocorrer apenas se tiver informação

Para verificar a formação também dá problemas, mas no caso de adicionar formato_cpf_cnpj, gera exceção na aplicação

vicentimartins commented 3 years ago

Acredito que o PR-112 pode resolver este problema. @dimasf-dev você chegou a debugar na lib se a validação chegava a este ponto que o PR propõe de alteração?

vicentimartins commented 3 years ago

@dimasf-dev pode atualizar o pacote para validar que o erro não está mais ocorrendo?

dimasf-dev commented 3 years ago

baixei a última versão no repositório e o erro ainda persiste!

Obs. esse erro ocorre qdo estou usando a validação de formatação ex.: formato_cpf

a validação normal não está mais dando problemas. Porém a validação de formato sim, segue o print referente ao erro qdo o campo não é requerido e tem a diretiva de validação de formato.

dimasf-dev commented 3 years ago

Desculpe, reportei muito rápido e faltou detalhes, a validação normal não está mais dando problemas. Porém a validação de formato sim, segue o print referente ao erro qdo o campo não é requerido e tem a diretiva de validação de formato.

image

vicentimartins commented 3 years ago

@dimasf-dev se for possível, add o trecho do código e o log do erro para que tenhamos uma visão mais detalhada do problema.

dimasf-dev commented 3 years ago

Olá segue o trecho de código q gera o erro.

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class testController extends Controller { public function testValidade(Request $request) {

    $this->validate($request, [
        'cpf' => 'cpf|formato_cpf', // caso não seja enviadado valor no campo gera o erro q reportei anteriormente (formato_cpf)
        'cnpj' => 'cnpj',
    ]);        

    return view('teste');
}

}

vicentimartins commented 3 years ago

O que, ao meu ver, faz total sentido @dimasf-dev . Quando você valida usando 'cpf' => 'cpf|formato_cpf' você está informando ao validador que um valor está sendo passado para ele, quando na verdade você não está passando dado para ser validado.

Experimenta utilizar esta validação da forma como está descrito no readme:

$this->validate($request, [
    'cpf_cnpj' => 'required|cpf_cnpj',
]);

Esta é a forma recomendada para o caso que validamos cpf e/ou cnpj. Vou considerar essa issue como fechada, mas se o erro continuar, peço que reabra.

dimasf-dev commented 3 years ago

Não posso por esse campo como requerido, mas quando o usuário informa, preciso validar formato e valor.

que seria esse caso: 'cpf' => 'cpf|formato_cpf'

pra corrigir isso é só na funçao formato_cpf verificar se feio valor, se não tem valor nem testa.

vicentimartins commented 3 years ago

Ah Dimas, legal que você já tem a solução.

Estamos esperando seu PR para essa validação.

dimasf-dev commented 3 years ago

OK PR enviada!

Muito obrigado!

Em seg., 3 de mai. de 2021 às 00:36, Vicente Martins < @.***> escreveu:

Reopened #111 https://github.com/geekcom/validator-docs/issues/111.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/geekcom/validator-docs/issues/111#event-4676100991, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKU2K77HKGXCOZ3TI42TMU3TLYK4TANCNFSM4WCXD6KQ .