Yii Framework Forum: Filtrar Registro Na Consulta - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Filtrar Registro Na Consulta Como usar 'where' nos registro (após logado) Rate Topic: -----

#1 User is offline   Fábio R.R 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 17-August 12

Posted 21 October 2012 - 01:43 PM

Olá Pessoal

Como faço para filtrar registros após o login? Após logar, abro uma sessão 'cidade', armazenando a cidade do usuário logado. Quero que todas as consultas retornem os registros onde a cidade seja igual à cidade armazenada na sessão. Como e onde faço isso?

Obrigado pela força!!!
0

#2 User is offline   Rodrigo Coelho 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 665
  • Joined: 05-August 10
  • Location:Rio de Janeiro, Brazil

Posted 21 October 2012 - 02:53 PM

Fábio, dê uma olhada no guia.
0

#3 User is offline   Fábio R.R 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 17-August 12

Posted 21 October 2012 - 03:31 PM

View PostRodrigo Coelho, on 21 October 2012 - 02:53 PM, said:

Fábio, dê uma olhada no guia.


Rodrigo

Agradeço pelo link. Deu pra entender tudo certinho, mas como sou novo no yii, não estou conseguindo implementar isso. Onde eu coloco o método? No model (onde no model)? No controller (onde no controller)?

Cara... desculpa pela "primarisse"... rs, mas realmente eu não estou conseguindo.

Vlw!!!!!
0

#4 User is offline   Rodrigo Coelho 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 665
  • Joined: 05-August 10
  • Location:Rio de Janeiro, Brazil

Posted 21 October 2012 - 04:19 PM

Fábio, a minha sugestão é que antes de seguir implementando o filtro, você dê uma lida em todo o guia.
Você vai entender muito melhor sobre o framework :)
0

#5 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 818
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 21 October 2012 - 10:51 PM

Fábio,

Você pode setar a cidade do usuário logado, no UserIdentify, a condição onde $this->errorCode=self::ERROR_NONE.

Adiciona o:
$this->setState('cidade', 'Campo Grande');


Pego do CUserIdentify original.

...
if(!isset($users[$this->username])) {
	$this->errorCode=self::ERROR_USERNAME_INVALID;
} else if($users[$this->username]!==$this->password) {
	$this->errorCode=self::ERROR_PASSWORD_INVALID;
} else {
	$this->setState('cidade', 'Campo Grande');
	$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;

...


Depois de logado, você resgata este valor usando:
Yii::app()->user->cidade

This post has been edited by Newerton: 21 October 2012 - 10:51 PM

Newerton Vargas de Araújo
0

#6 User is offline   Fábio R.R 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 17-August 12

Posted 22 October 2012 - 05:10 PM

View PostNewerton, on 21 October 2012 - 10:51 PM, said:

Fábio,

Você pode setar a cidade do usuário logado, no UserIdentify, a condição onde $this->errorCode=self::ERROR_NONE.

Adiciona o:
$this->setState('cidade', 'Campo Grande');


Pego do CUserIdentify original.

...
if(!isset($users[$this->username])) {
	$this->errorCode=self::ERROR_USERNAME_INVALID;
} else if($users[$this->username]!==$this->password) {
	$this->errorCode=self::ERROR_PASSWORD_INVALID;
} else {
	$this->setState('cidade', 'Campo Grande');
	$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;

...


Depois de logado, você resgata este valor usando:
Yii::app()->user->cidade



Opa... blz Newerton?

Na verdade eu fiz isso mesmo, recuperando do banco de dados a cidade/uf do usuário logado. Assim:

$this->setState('cidade', $record->adm_cidade);
$this->setState('estado', $record->adm_estado);


Até aí beleza. O que eu preciso agora, é que o dataGrid exiba apenas os registros onde a cidade e o estado sejam = Yii::app()->user->cidade e Yii::app()->user->estado.

É aí que to me perdendo.

Abração e obrigado!!!
0

#7 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 818
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 22 October 2012 - 08:52 PM

Fábio,

Vai na função search() que se encontra no seu Model.

Procura a linha:
$this->compare('cidade', $this->cidade);


Altera para:
$this->compare('cidade', Yii::app()->user->cidade);

Newerton Vargas de Araújo
0

#8 User is offline   Fábio R.R 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 17-August 12

Posted 23 October 2012 - 06:24 AM

View PostNewerton, on 22 October 2012 - 08:52 PM, said:

Fábio,

Vai na função search() que se encontra no seu Model.

Procura a linha:
$this->compare('cidade', $this->cidade);


Altera para:
$this->compare('cidade', Yii::app()->user->cidade);



Oh, cara... xiq!!! Eu tinha procurado isso no Google e achei umas explicações que mandava ir até o Japão, depois plantar bananeira, ser enterrado vivo... Muito obrigado. Simples e direto! Funcionou certinho.

Abração
0

#9 User is offline   betelgeuse 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 99
  • Joined: 12-January 09

Posted 23 October 2012 - 07:03 AM

no seu model:
public function defaultScope()
    {
			return array(
				'condition' => 'municipio = "'.Yii::app()->user->municipio.'"'
			);
    }

a code snippet says more than a thousand words
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users