Um dos recursos que considero mais interessante no Zend Framework é sua estrutura de validadores para campos de formulário.
Um validador é um componente utilizado para aplicar determinada regra de validação a um campo de texto, como permitir apenas caracteres numericos, validar endereços de e-mail ou definir tamanhos máximos de uma string.
O Zend já disponibiliza uma grande quantidade de validadores padrão. Nesse artigo apresento uma das formas de utilizá-los. Mais detalhes poderão ser encontrados na documentação do ZF.
Principais validadores disponíveis (lista completa aqui)
- Alnum: Permite apenas caracteres alfa-numéricos (letras (não permite caracteres acentuados) e números) e opcionalmente espaços em branco.
- Alpha: Permite apenas letras do alfabeto (não permite caracteres acentuados) e opcionalmente espaços em branco.
- Between: Valida números entre um mínimo e um máximo definido no contrutor do componente.
- Ccnum: Valida números de cartões de crédito.
- Date: Valida datas no formato YYYY-MM-DD (Ano-mês-dia).
- Digits: Permite apenas caracteres numéricos.
- EmailAddress: valida endereços de e-mail.
- Float: Permite valores de ponto flutuante como unidades monetárias.
- GreaterThan: Permite valores maiores que um mínimo pré-estabelecido.
- LessThan: Permite apenas valores menores que um mínimo pré-estabelecido.
- Int: Permite apenas valores inteiros.
- Ip: Valida endereços de IP.
- NotEmpty: Permite apenas valores não vazios.
- Regex: Usa uma expressão regular para validar um campo.
- StringLength: Valida strings entre um mínimo e um máximo pré-estabelecidos.
Métodos Básicos
- isValid($param): Retorna true caso o parêmtro seja válido.
- getMessages(): Retorna um array com as mensagens de erro na validação. Só deve ser usado caso o método isValid() retone false.
- setMessage(): Permite customizar uma mensagem de erro. Permite usar um sinal %value% que será substituído pelo valor do parâmetro passado no método isValid().
Exemplo basico de uso: Zend_Validate_Alpha
[php]
Zend_Loader::loadClass("Zend_Validate_Alpha");
//Variável booleana que informa se será permitido caracteres booleanos ou não. O padrão da classe é "false".
$permiteEspacoBranco = true;
//Cria instância do validador.
$alphaValidate = new Zend_Validate_Alpha($permiteEspacoBranco);
//Customiza mensagem de erro
$alphaValidate->setMessage("O valor %value% não possui apenas caracteres alfabéticos.");
//String usada na validação
$string = "login1234";
//Verifica se valor passado no parâmetro é válido
if($alphaValidate->isValid("login1234"))
{
//String é válida
echo $string." possui apenas caracteres alfabéticos.";
}
else
{
//Exibe Mensagens de Erro Customizada.
foreache($alphaValidate->getMessages() as $message)
{
echo $message;
}
}
//Retornará “O valor login1234 não possui apenas caracteres alfabéticos.”
[/php]
Exemplo básico de uso: Zend_Validate_EmailAddress
[php]
Zend_Loader::loadClass("Zend_Validate_EmailAddress");
//Cria instância do validador.
$emailValidate = new Zend_Validate_EmaiAddress();
//Customiza mensagem de erro
$emailValidate->setMessage("O email %value% não é válido.");
//String usada na validação
$emails = array("email1"=>"kaleu@gmail.com", "email2"=>"kaleu.gmail.com");
foreach($emails as $key=>$email)
{
//Verifica se valor passado no parâmetro é válido
if($emailValidate->isValid($email))
{
//Email é válido
echo $email." é válido";
}
else
{
//Exibe Mensagens de Erro Customizada.
foreache($emailValidate->getMessages() as $message)
{
echo $message."
";
}
}
}
//Retornará:
//kaleu@gmail.com é válido
//O email kaleu.gmail.com não é válido
[/php]
Exemplo Básico de uso: Zend_Validate_StringLength
[php]
Zend_Loader::loadClass("Zend_Validate_StringLength");
//Define Variáveis
$min = 5; $max = 40;
//Cria instância do validador.
$stringLengthValidate = new Zend_Validate_StringLength($min, $max);
//Customiza mensagem de erro. A classe StringLength permite os sinais %min% e %max%.
$stringLengthValidate->setMessage("A string %value% deve conter entre %min% e %max% caracteres");
$strings = array("string1"=>;"Kaléu Caminha", "string2"=>"kaleu");
foreach($strings as $key=>$string)
{
//Verifica se valor passado no parâmetro é válido
if($stringLengthValidate->isValid($string))
{
//String é válida
echo $string." contem entre 10 e 40 caracteres.";
}
else
{
//Exibe Mensagens de Erro Customizada.
foreache($stringLengthValidate->getMessages() as $message)
{
echo $message."
";
}
}
}
//Retornará:
//Kaléu Caminha contém entre 10 e 40 caracteres.
//kaleu deve conter entre 10 e 40 caracteres.
[/php]
Conclusão
Existem muitas possibilidades para o uso de validadores, para mais informações consulte a documentação do Zend ou o Fórum ZF Brasil.
Você pode também deixar alguma dúvida nos comentários..é uma boa forma principalmente para o meu aprendizado poder ajudar em alguma coisa.
Comentários Recentes