Páginas

terça-feira, 29 de janeiro de 2013

Manipulando sessões no CakePHP


Procurei bastante pela internet mas não encontrei material suficiente para sanar minhas dúvidas sobre a manipulação de sessões no CakePHP 2.0 que é a versão que estou usando em um projeto, pelo menos não em portugues do Brasil.
Muito bem sem o framework o programador tem total liberdade para povoar e manipular a variável $_SESSION no entanto usando o framework os valores são lidos em:
$this-> Session-> read('nome_variavel')  //sendo que na ausencia do parâmetro nome_variavel o comando acima retornama tudos os valores contidos na session
Se você der print_r um em um arquivo da camada view //seu_arquivo.ctp print_r($this-> Session-> read()); //ou $valores_session = $this-> Session-> read(); print_r($valores_session);
Você terá o seguinte resultado:
Array
(
    [Config] => Array
        (
            [userAgent] => 91804d6a663b4ea4f7c5a78c02a07bce
            [time] => 1359504367
            [countdown] => 10
        )

    [Message] => Array
        (
        )
    [nome_sua_variavel_indece] => Array
        (
        )
)
Os arrays Config e Message já estão presentes na session, caso você não tenha inserido o terceiro valor não existirá em seu sistema

Para ler apenas um valor:

// se for uma string pode ser escrito assim $this-> Session-> read('seu_indice'); // ou você pode armazena em outra variável $outra_variavel = $this-> Session-> read('seu_indice');

Gravando valores na session do Cakephp

Para guardar valores use o seguinte código:
$this->set('nome_da_variavel', 'valor_variavel'); //sendo que o valor_variavel pode ser um array ou outra variável como no php puro sem problemas

Alterar valores na session com CakePHP

Eu não encontrei nenhuma função específica para alterar valores, quem quiser procurar na documentação oficial ou por fora, que se sinta-se a vontade, se não for pedir demais põe ai nos comentários pra mim, mas eu fiz uma gambiarra que funciona
$this-> Session-> delete('posicao_a_ser_alterada'); //isto apaga $this->set('posicao_a_ser_alterada', 'novo_valor'); // repovoando ai você compreende o delete.

Destruir a session com CakePHP

if($this->Session->valid()) { $this-> Session-> destroy(); //tentei usar apenas isso, sem o if mas as vezes falha e não destrói }

Nenhum comentário:

Postar um comentário