DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

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

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

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

  • alphanumeric - Números e letras
  • between - array(‘between’,3,5) ranger entre dois números
  • email - verifica o formato de email
  • extension - tipo do arquivo.jpg .pdf...
  • isUnique - quando um campo deve único como um CFP por exemplo
  • minLength - tamanho minimo
  • maxLength - tamnho maximo
  • numeric - apenas números
  • notEmpty - não permite o campo vazio

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.


Allan Douglas
Analista Programador, com foco nas linguagens Java e PHP, Tecnico em Informática Formado pela Escola Técnica Redentorista - Campina Grande Paraíba. Graduando em Análise de Sistemas pela Estácio do Recife.
O que você achou deste post?

    1 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Edson Duarte
Parabéns pelo post, me ajudou muito neste início de desenvolvimento com cakephp.
[há +1 mês] - Responder

 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03