Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tylër

[Resolvido] $this->params em Models

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.