Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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? =)
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 ]
>
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
Gostaria de uma ajuda com isso.... =)
Aguardo retorno..
Obrigado!
Att.
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.