4.1 Validação de dados
A validação dos dados é uma das mais importantes partes de qualquer aplicação, elas fazem com que os dados em um Model respeitem as regras da aplicação. Por exemplo, você pode estar querendo que as senhas tenham no mínimo oito caracteres, ou garantir que os usernames sejam únicos. Definindo regras de validação você faz com que a manipulação dos formulários fique bem mais fácil.
Há vários aspectos diferentes no processo de validação. O quê iremos cobrir nesta seção é a parte do Model. Essencialmente: o quê acontece quando você chama o método save() do seu model. Para mais informações de como manipular as mensagens de erro de validação, dê uma olhada na seção sobre o FormHelper.
O primeiro passo para a validação de dados, é a criação de regras de validação no seu Model. Para isso, use a array Model::validate na definição do módulo, por exemplo:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array();
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array();}?>
No exemplo acima, a array $validate foi adicionada ao Model User, mas a array ainda não contém nenhuma regra de validação. Assumindo que a tabela de usuários já tenha os campos de login, password (senha), email e born (data de nascimento), o exemplo abaixo mostra algumas regras de validação simples para aplicarmos à esses campos:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => 'alphaNumeric',
'email' => 'email',
'born' => 'date'
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => 'alphaNumeric','email' => 'email','born' => 'date');}?>
Este último exemplo mostra como as regras de validação podem ser adicionadas a campos do model. Para o campo de login, somente letras e números serão aceitos, o email tem de ser válido, e a data de nascimento deve ser uma data válida. Definindo regras de validação o CakePHP mostra as mensagens de erro nos formulários automágicamente, se os dados não seguirem as regras.
O CakePHP possui várias regras de validação e usar elas é bem fácil. Algumas das regras "de fábrica" lhe permitem verificar as formatações de e-mails, URLs, e números de cartões de crédito - cobriremos essas regras em detalhes em breve.
Temos aqui um exemplo mais complexo de validação que tira vantagem de algumas dessas regras de validação "de fábrica":
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => array(
'alphanumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Letras e números somente'
),
'between' => array(
'rule' => array('between', 5, 15),
'message' => 'Entre 5 e 15 caracteres'
)
),
'password' => array(
'rule' => array('minLength', '8'),
'message' => 'Mínimo de 8 caracteres'
),
'email' => 'email',
'born' => array(
'rule' => 'date',
'message' => 'Insira uma data válida',
'allowEmpty' => true
)
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => array('alphanumeric' => array('rule' => 'alphaNumeric','required' => true,'message' => 'Letras e números somente'),'between' => array('rule' => array('between', 5, 15),'message' => 'Entre 5 e 15 caracteres')),'password' => array('rule' => array('minLength', '8'),'message' => 'Mínimo de 8 caracteres'),'email' => 'email','born' => array('rule' => 'date','message' => 'Insira uma data válida','allowEmpty' => true));}?>
Duas regras de validação foram definidas para o login: ele deve conter apenas letras e números e o tamanho deve ter entre 5 e 15 caracteres. O campo password (senha) deve ter no mínimo 8 caracteres. O email deve ser um endereço de email válido, e o campo born (data de nascimento) deve ser uma data válida. Note também que você pode incluir mensagens personalizadas para que o CakePHP mostre quando as regras definidas falharem.
Como o exemplo acima mostrou, um único campo pode haver múltiplas regras de validação. E se as regras de validação "de fábrica" não resolverem o seu caso, você pode adicionar suas próprias regras de validação.
Agora que você aprendeu um pouco sobre como a validação funciona, vamos olhar como elas são definidas em um model. Há três diferentes formas que você pode usar para definir regras de validação: arrays simples, regra única por campo, e múltiplas regras por campo.
