validação no model

14 views
Skip to first unread message

DS interativa | PHP Grupos

unread,
Jan 14, 2014, 7:49:39 AM1/14/14
to kohan...@googlegroups.com
pessoal, como eu poderia fazer para colocar uma valida��o de cpf dentro
do model ORM de clientes

queria saber se ja tem na base e se � valido !!

no caso de valido, tenho um arquivo a parte chamado funcoes.php com uma
classe aux e um metodo estatico para validar


alguem ai poderia me ajudar ??
estou usando o ko3.3

valeu

Douglas J.A.M

unread,
Jan 14, 2014, 7:55:02 AM1/14/14
to kohan...@googlegroups.com
No meu caso eu fiz uma extensão cascuda, eu curto minha implementação e utilizo ela a anos, atenção para as reticencias que significam trechos de código ocultos, voce pode adicionar qualquer parada aí, ou fazer do jeito padrão extendendo o Valid.

classe application/classes/ORM.php

...
 public function check(Validation $extra_validation = NULL) {
        return parent::check($extra_validation) && parent::check($this->valida());
    }

    public function valida() {
        return null;
    }
...


classe do model especifico

...

    public function valida() {

        $validation = $this->validation();

if ($validation['tipopessoa'] == 'FÍSICA') {

            if (Helper_STRING::isNull($validation['cpf']) ||
                    Helper_STRING::isNull($validation['rg']) || Helper_STRING::isNull($validation['rgorgao']) || Helper_STRING::isNull($validation['rgexpedicao']) || Helper_STRING::isNull($validation['cnh']) || Helper_STRING::isNull($validation['cnhcategoria'])) {
                $validation->error('tipopessoa', 'fisica_not_empty');
            } else if (!Valid::cpf($validation['cpf'])) {
                $validation->error('cpf', 'cpf');
            }
...

        if ($validation->errors())
            throw new ORM_Validation_Exception($this->errors_filename(), $validation);

        return $validation;

...

classe application/classes/valid.php


    public static function cpf($cpf) {

        $cpf = str_pad(preg_replace('/[^0-9]/', '', $cpf), 11, '0', STR_PAD_LEFT);
        // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
        if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999') {
            return FALSE;
        } else { // Calcula os números para verificar se o CPF é verdadeiro
            for ($t = 9; $t < 11; $t++) {
                for ($d = 0, $c = 0; $c < $t; $c++) {
                    $d += $cpf{$c} * (($t + 1) - $c);
                }
                $d = ((10 * $d) % 11) % 10;
                if ($cpf{$c} != $d) {
                    return FALSE;
                }
            }
            return TRUE;
        }
    }




Em 14 de janeiro de 2014 10:49, DS interativa | PHP Grupos <ph...@dsinterativa.com.br> escreveu:
pessoal, como eu poderia fazer para colocar uma validação de cpf dentro do model ORM de clientes

queria saber se ja tem na base e se é valido !!


no caso de valido, tenho um arquivo a parte chamado funcoes.php com uma classe aux e um metodo estatico para validar


alguem ai poderia me ajudar ??
estou usando o ko3.3

valeu


--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para kohana-php+unsubscribe@googlegroups.com.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/kohana-php.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

DS interativa | PHP Grupos

unread,
Jan 14, 2014, 7:59:04 AM1/14/14
to kohan...@googlegroups.com
entendi, mas na aplicação que tenho aqui, preciso usar no formato atual para não sair do padrao, teria que ter uma rule que usa a função do ORM sem extender o ORM diretamente...
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para kohana-php+...@googlegroups.com.

Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/kohana-php.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para kohana-php+...@googlegroups.com.

Douglas J.A.M

unread,
Jan 14, 2014, 8:01:15 AM1/14/14
to kohan...@googlegroups.com
voce quem sabe, noc aso voce chama a função por callback como diz na documentação, é so pegar e ler, tem que procurar mais, aí voce acha o que deseja na documentação está bem completa e intuitiva

DS interativa | PHP Grupos

unread,
Jan 14, 2014, 8:02:46 AM1/14/14
to kohan...@googlegroups.com
ai que tah tentei fazer pela documentação mas não consegui...e tentei procurar exemplos e não tive sucesso, ou o mais provavel, não soube procurar...

mas valeu pela ajuda...continuarei pesquisando aqui

Douglas J.A.M

unread,
Jan 14, 2014, 8:10:53 AM1/14/14
to kohan...@googlegroups.com
te passei a resposta ai brother por callback, so por no seu model isso aí

no controller
$post->rule('username', 'User_Model::unique_username');

no model é so por


public function rules() { return array( 'cpf' => array( array('User_Model::unique_username'), ),
public static function unique_username($username)
{
    // Check if the username already exists in the database
    return ! DB::select(array(DB::expr('COUNT(username)'), 'total'))
        ->from('users')
        ->where('username', '=', $username)
        ->execute()
        ->get('total');
}

DS interativa | PHP Grupos

unread,
Jan 14, 2014, 8:20:09 AM1/14/14
to kohan...@googlegroups.com
estou tentando aqui....valeu...
qq novidade eu posto...

no meu controler tem apenas o try/catch para usar o save direto sem usar validation ou rules diretamente no post...

valeu a juda

DS interativa | PHP Grupos

unread,
Jan 14, 2014, 8:52:41 AM1/14/14
to kohan...@googlegroups.com
estou seguindo este modelo
http://kohanaframework.org/3.3/guide/orm/validation#automatic-validation

ainda sem sucesso aqui, vou postar o trecho do codigo no pastebin e volto aqui logo mais
valeu


Em 14/01/2014 11:10, Douglas J.A.M escreveu:

DS interativa | PHP Grupos

unread,
Jan 15, 2014, 6:05:06 AM1/15/14
to kohan...@googlegroups.com
consegui usando na validação
campo => array($this, "funcao")

a documentação as vezes deixa a desejar...rs

obrigado pela ajuda


Em 14/01/2014 11:10, Douglas J.A.M escreveu:

felipe bastos

unread,
Jan 15, 2014, 8:20:01 AM1/15/14
to Kohana Php
testou direitinho para ver se a função está sendo invocada ou se está chegando como parametro?

coloca um caso com erro para ver se falha :D

Acho que se enquadra no caso array(Class, method) sem um array .. mas só para garantir seria bom testar :D
Reply all
Reply to author
Forward
0 new messages