Manipulando os Dados da Sessão

Manipulando os dados que estão na sessão

Quando fazemos a instalação do Magento, em uma das etapas nos é perguntado como o Magento deve controlar a sessão do sistema, se usando arquivos ou banco de dados. Lembra disso?

Indenpendente da forma escolhida, durante a navegação na loja, várias informações ficam em sessão para identificar o usuário, como o login, produtos visualizados, produtos no carrinho de compras, etc.

Com tanta informação circulando na sessão, pode acontecer de em algum momento você desejar manipular esses dados.

Antes disso vale citar que em Sistema -> Configuração -> Geral [Web], você tem a guia “Sessão Gerenciada por Cookie” onde pode definir alguns aspectos da sessão.

sessao por cookie

sessao por cookie

Voltando ao post, caso deseje por exemplo, limpar toda a sessão do carrinho de compras do usuário, deve inserir o seguinte comando php no seu código:

[php]Mage::getSingleton(‘checkout/session’)->clear();[/php]

Se preferir, pode percorrer a lista de itens do carrinho que estão na sessão e apagar um a um:

[php]foreach( Mage::getSingleton(‘checkout/session’)->getQuote()->getItemsCollection() as $item ) {
Mage::getSingleton(‘checkout/cart’)->removeItem( $item->getId() )->save();
}[/php]

Para verificar se o usuário está logado, com uma sessão aberta por exemplo:

[php]Mage::getSingleton(‘customer/session’)->isLoggedIn()[/php]

Outras dicas para saber se o usuário está logado leia o post: saber se usuário está logado.

Para apagar a sessão do cliente, o comando seria o mesmo usado para limpar o carrinho, apenas alterando a classe da singleton:

[php]Mage::getSingleton(‘customer/session’)->clear();[/php]

Vale lembrar que o Magento usa instâncias de sessões diferentes para “frontend” e “adminhtml“. Então para inicializar uma sessão de frontend por exemplo use:

[php]Mage::getSingleton(‘core/session’, array(‘name’=>’frontend’));[/php]

Caso deseje inserir alguma informação nova na sessão:

[php]Mage::getSingleton(‘core/session’)->setSuaVariavel(‘seus dados’);[/php]

Depois para recuperar esses dados:

[php]$seusDados = Mage::getSingleton(‘core/session’)->getSuaVariavel();[/php]

Dependendo de onde você está manipulando as informações da sessão, talvez seja necessário instânciar o objeto Mage para pode usar o Singleton.

[php]Mage::app();[/php]

Basta inserir essa linha acima antes do Mage:getSingleton… Basicamente é isso que precisamos saber sobre sessão, o resto são variações sobre o mesmo tema, detalhes.

Sucesso!

, , , , ,

Sobre Mario SAM

Mestrando em Comércio Eletrônico e Intenet, com pós-graduação em Gestão de Projetos e TI, MBA em Marketing, formado em Web Design e Programação. Certificado SCJP/SUN. Colunista da revista WIDE, problogger...entre outras coisas...faixa preta.