Validação de dados com o CakePHP

Veja nesse artigo como fazer validações no servidor com o utilizando a variável $validate do model de uma maneira simples e eficaz

Uma das tarefas mais cruciais num sistema de informação é garantir a solidez dos dados, que serão processados em informações, para que o sistema seja confiável e tenha uma taxa de erros mínima. Deve-se também preocupar-se com a possibilidade de dados de tipos diferente fiquem em conflito, por exemplo: Temos um campo em um formulário no qual deve ser digitada a idade de uma pessoa e no banco temos um campo do tipo int, esperamos que o usuário utilize números, mas ele pode imaginar e pode digitar por extenso e quando formos gravar isso no banco lógico que não vai dar certo.

Então sem mais delongas vamos começar.

Validando a Entrada de dados

Toda a regra de validação é feita no model através de um array, nele podemos associar nossos campos com suas regras utilizando funções já prontas e criando nossas quando for o caso.

Vejamos o seguinte formulário criado usando o HtmlHelper.

Listagem 1: formulário para validar

<?php /*restante do código acima*/ Echo $this->Form->create (‘Pessoa’,array (‘url’=>array( ‘action’=>’cadastra’,’controller’=>’pessoas’ ) ) ); echo $this->Form->input(‘nome’); echo $this->Form->input(‘idade’); echo $this->Form->end(‘salvar’); /*restante do código abaixo*/ ?>

Iremos validar para que nenhum dos campos seja passado vazio e idade apenas números.

No model Pessoa varemos a seguinte configuração.

Listagem 2: model com regra de validação completa

<?php class Pessoa extends AppModel{ public $validate = array( //campo que deve ser validado ‘nome’ => array( //alias da validação ‘notempty’ => array( ‘rule’=>’notempty’,//validação para não aceitar vazio ‘message’=>”Você deve preencher este campo”//erro ) ), ‘idade’ => array( ‘notempty’ => array( ‘rule’ => ‘notempty’, ‘message’ => ‘Você deve preencher este campo’ ), ‘numeric’ => array( ‘rule’ => ‘numeric’, ‘message’ => ‘Você deve preencher este campo’ ) ) ); } ?>

Dessa forma temos uma validação básica personalizada. Mas essa não é única forma de se fazer a validação, vejamos outros modos.

Modo simples.

Nesse modo escrevemos pouco mais temos uma validação sem muita personalização. Deve ser feita dessa forma:

Listagem 3: Modo simples de validação

public $validate =array( 'nomedocampo' => 'regra',’nomedocampo2’=>’regra2’);

Modo completo.

Esse é o modo que usamos na validação da listagem 2, no qual podemos definir diversas opções para tornar mas personalizada e também podemos fazer mais de uma validação por campo.

Veja as opções completas:

Listagem 4: Validação Completa

public $validate = array( 'fieldName1' => array( ‘rule’=>array( 'rule' => 'regra', // nome da regra ou: array('regra', 'param1', / //'param2' ...) 'required' => true,//faz com que o esse campo sempre seja requerido 'allowEmpty' => false,// boleano permite ou não o campo vazio 'on' => 'create', // ou: 'update' tipo de requisição ao banco de dados 'message' => 'A mensagem de erro saca?' )//segunda regra vem aqui na segunda posição ) )

Pronto temos uma validação completa e ainda assim simples para de entender. E ainda veremos como criar nossas próprias validações.

Principais tipos de validações padrão

Criando validações

Não Tem muito mistério na criação de novas regras de validação. Elas são funções normais public ou protected com obrigatoriamente um argumento que será o campo que você estará validandO.

Listagem 5: Criando uma validação

<?php //restante do código public function validaMaiorIdade($check){ /*o campo valor do campo fica desponivel dentro de $chech[‘nomeDocampo’]*/ if($check[‘idade’] > 18) return true; else return false; } ?>

Função criada basta chama-la normalmente na validação. Da seguinte forma:

Listagem 6: Chamada da validação personalizada.

//restante do código acima public $validate = array( ‘idade’ => array( ‘validaMaiorIdade’ =>array( ‘rule’ =>’ validaMaiorIdade’/*se houvesse mais argumentos array(validaMaiorIdade,param1,param2)*/, ‘message’ =>’Você não é maior de idade’ ) ) );

Pronto pessoal é isso, repito, fácil e rápido, a única desvantagem que vejo aqui é o processamento no servidor que aumenta naturalmente quando vazemos diversas coisas nele, mas caso uma validação cliente-side falhe a validação previne o erro.

Até o próximo post e deixem seus feedbacks.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados