Filtrar Registro Na Consulta

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!!!

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!!!!!

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 :)

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!!!

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

no seu model:




public function defaultScope()

    {

			return array(

				'condition' => 'municipio = "'.Yii::app()->user->municipio.'"'

			);

    }