Veja bem,
Se você está que nem eu, desenvolvendo com yii já deve ter chegado a questão das classes de validação. Se não chegou, vai chegar.
No meu caso construí uma classe de validação para CEP.
Primeiro passo:
Na classe Model
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('code',
'required'),
array(
'code','cep'),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array(
'id, code, noise, accessibility, neighborhood, afforestation, violence',
'safe',
'on' => 'search'),
);
}
//Segundo passo criar a classe de validação..........
class cep extends CValidator
{ //início da Classe
public function validateAttribute($object, $attribute)
{
$message = utf8_encode("não é válido ou não existe.");
if (!$this->validaCEP($object->$attribute)) {
$message = $this->message !== null ? $this->message : Yii::t('cep',
'{attribute} ' . $message);
$this->addError($object, $attribute, $message);
}
}
public function clientValidateAttribute($object, $attribute)
{
return "";
}
private function validaCEP($cep)
{
$cep = trim($cep);
if (!is_numeric($cep)) {
return false;
}
if (strlen($cep) != 8) {
return false;
}
$content = $this->get_data("utilitario/lercep.php?cep=$cep");
$content = trim($content);
if (strlen($content) == 0)
{
return false;
}
return true;
}
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
} //fim da Classe
Para mais detalhes acesse este link
http://abelcorreadias.blogspot.com.br/2012/01/criando-um-validator-para-o-campo-cpf.html
PS: utilitario/lercep.php não é um php mágico que acesse o cep de algum site como república virtual ou mesmo o site do correio. Estou acessando minha própria base de CEP. Atenção: a base de CEP do correio é gigantesca.
Nenhum comentário:
Postar um comentário