Tylër 0 Denunciar post Postado Junho 23, 2011 Boa noite, estou tentando utilizar o $this->params em um model, numa função de validação, para evitar que em uma action diferente, seja validado aquele campo, em específico.... Segui este exemplo para tentar integrar, mas não obtive sucesso... =/ http://bakery.cakeph...amed-parameters Apenas o número '1' foi me retornado quando eu dei um pr($this->namedArgs); exit; Isso é uma boa tática, mas os Models não reconhecem e não capturam nada com a tag $this->params.... É uma pena... Gostaria de uma ajuda com isso.... =) Aguardo retorno.. Obrigado! Att. Compartilhar este post Link para o post Compartilhar em outros sites
m@dDog 5 Denunciar post Postado Junho 23, 2011 Boa noite, estou tentando utilizar o $this->params em um model, numa função de validação, para evitar que em uma action diferente, seja validado aquele campo, em específico.... Segui este exemplo para tentar integrar, mas não obtive sucesso... =/ http://bakery.cakeph...amed-parameters Apenas o número '1' foi me retornado quando eu dei um pr($this->namedArgs); exit; Isso é uma boa tática, mas os Models não reconhecem e não capturam nada com a tag $this->params.... É uma pena... Gostaria de uma ajuda com isso.... =) Aguardo retorno.. Obrigado! Att. $this->params só funciona em controllers Se o problema é remover uma validação em uma determinada situação do seu $this->params, você pode fazer um unset($this->Model->validades['validacao']); no seu controller. Mas teria que entender melhor o que você está precisando fazer, para encontrar uma solução. Pois me parece estranho o que está procurando fazer, ou eu não entendi bem. Compartilhar este post Link para o post Compartilhar em outros sites
Tylër 0 Denunciar post Postado Junho 23, 2011 Vou explicar melhor: Model user.php 'check_alternate_email_registered' => array( 'rule' => array( 'check_alternate_email_registered' ), 'message' => 'Este e-mail alternativo atingiu o limite de cadastros!' ) // Checa se o email alternativo ja esta registrado function check_alternate_email_registered() { switch ($this->params['controller']) { case ( $this->params['controller'] == 'users' ): if( $this->params['action'] == 'register' ) { $alternate_email = $this->data['User']['alternate_email']; $params = array( 'conditions' => array('User.alternate_email'=>$alternate_email ) ); $count = $this->find( 'count', $params ); if (empty($count)) { return TRUE; // se estiver vazio, entao pode cadastra-lo } else { return FALSE; } } else { return TRUE; // ... para as demais actions que utilizarem o campo de email alternativo } break; } } Não daria certo eu utilizar o unset(validate['validacao'] ); pois eu já faço uma checagem da validacao no controller =/ if ( !empty($this->data) ) { unset( $this->User->validates['check_alternate_email_registered'] ); $this->User->set($this->data); if ($this->User->validates()) { Entendeste agora o que estou tentando fazer? =) Compartilhar este post Link para o post Compartilhar em outros sites
Tylër 0 Denunciar post Postado Junho 23, 2011 Ah, consegui! haha' No beforeFilter() da app_controller eu defini a variável: define( '__params', $this->params['action'] ); model user: function check_alternate_email_registered() { if ( __params === 'register' ) { $alternate_email = $this->data['User']['alternate_email']; $params = array( 'conditions' => array('User.alternate_email'=>$alternate_email ) ); $count = $this->find( 'count', $params ); if ( empty($count) ) { return TRUE; // se estiver vazio, entao pode cadastra-lo } else { return FALSE; } } else { return TRUE; } } É uma pena que o método define() só definem variáveis e nao arrays, mas aí eu estou querendo demais hehe =p Obg man, pela ajuda! ;) Então, [ RESOLVIDO ] Compartilhar este post Link para o post Compartilhar em outros sites