Salvar na sessão

[color="#000080"]

Olá pessoal, estou precisando de ajuda - Obrigado!

Quero salvar os dados de uma consulta ao db em sessão para poder usar de qualquer parte do sistema as informações.

Estou colocando o seguinte código no UserIdentity.php , mas ocorre erro.[/color]




$Permissoes=Yii::app()->db->createCommand()

   ->select('*')

   ->from('usuario_permissao')

   ->where('IdGrupo=:IdGrupo', array(':IdGrupo'=>1))

   ->query();


Yii::app()->user->setState('Permissao',$Permissoes); 



[color="#000080"]O resultado contido na sessão quero apresentar inserindo o seguinte código na view:[/color]




foreach ( Yii::app()->user->getState('Permissao') as $BuscaPermissao ) { 

      echo $BuscaPermissao['Id']."<br>";

      echo $BuscaPermissao['IdGrupo']."<br>";

      echo $BuscaPermissao['Area']."<br>";

      echo $BuscaPermissao['Acesso']."<br>";

}



[color="#000080"]Então quando vou logar acontece esse erro:[/color]

[color="#FF0000"][size="6"]PDOException[/size][/color]

[color="#696969"]You cannot serialize or unserialize PDOStatement instances[/color]

[color="#000000"]C:\www\martyii\themes\classico\views\layouts\main.php(33)[/color]


[color="#000000"]<div id="mainmenu">

	&lt;?php &#036;this-&gt;widget('zii.widgets.CMenu',array(


		'items'=&gt;array(


			array('label'=&gt;'Home', 'url'=&gt;array('/site/index')),


			array('label'=&gt;'About', 'url'=&gt;array('/site/page', 'view'=&gt;'about')),


			array('label'=&gt;'Contact', 'url'=&gt;array('/site/contact')),

[color="#FF0000"] array(‘label’=>‘Login’, ‘url’=>array(’/site/login’), ‘visible’=>Yii::app()->user->isGuest),[/color]

			array('label'=&gt;'Logout ('.Yii::app()-&gt;user-&gt;name.')', 'url'=&gt;array('/site/logout'), 'visible'=&gt;&#33;Yii::app()-&gt;user-&gt;isGuest)


		),


	)); ?&gt;


&lt;/div&gt;[/color]

Topic moved. If you want to find help in General Discussions forum then translate your message to english.

o metodo setState do component user grava as informacoes serializadas numa session

como o resultado duma query eh um objeto da classe PDOStatement, e esse objeto nao pode ser serializado, acontece o erro

tente salvar em cache ou tranformar em array o objeto antes de salvar que vai funcionar

Gustavo


Hi, 


It's because the return of Query Builder ->query(), is a kind of resource, resources can't be serialized and any data in a session is automatically serialized. So how do we fix it? One way is to convert the resource into an array.


Change


Yii::app()->user->setState('Permissao',$Permissoes); 




to:


//add ->readAll() to convert CDbDataReader to an array

Yii::app()->user->setState('Permissao',$Permissoes->readAll()); 




Try it out, hope I've helped you. 

Foi isto mesmo! Obrigado Gustavo.