Pergunta

Alguém pode me dar um exemplo de como criar sessões de dados e escrever para ela. Eu vi sintaxe sobre como gravar dados em uma sessão usando comando de escrita. Mas como criar uma sessão e recuperar os valores nele.

Na minha aplicação, eu tenho dois dados, form_id e user_id que precisa ser usado em todos os pedidos de página. Então, como posso salvá-la como uma variável de sessão e usá-lo em toda a aplicação?

Editar

function register()
{
    $userId=$this->User->registerUser($this->data);
    $this->Session->write('User.UserId',$userId);
    //echo "session".$this->Session->read('User.UserId');
    $this->User->data=$this->data;
    if (!$this->User->validates())
    {
    $this->Flash('Please enter valid inputs','/forms' );
      return;   
    }

$this->Flash('User account created','/forms/homepage/'.$userId);            

}   

Como usar a variável de sessão 'User.UserId' em vez de $ userId em $ this-> flash ( 'Conta de usuário criada', '/ formas / homepage /'. $ userId );

E eu posso usar essa variável em todos os meus arquivos de visão, porque em todas as solicitações de páginas Eu também passar o userId?

EDIT 2

Eu tenho 2 controladores, usuário e forma. Eu escrevo o ID de usuário para uma variável de sessão nos usuários _controller. Eu tenho um arquivo de visão chamado homepage.ctp, cuja ação está no forms_controller. Agora, como eu posso usar a variável de sessão definido no users_controller na página inicial? Desculpe se eu estou fazendo perguntas tolas. Eu atravessei o cakebook, mas minhas dúvidas não foram apuradas. Eu também estou tentando método de tentativa e erro de codificação, então por favor me ajude.

EDIT 3

Eu tenho uma variável de sessão 'uid' que é o ID do usuário na ação home page de um controlador.

       $this->Session->write('uid',$this->data['Form']['created_by']);

Eu preciso a mesma variável no método do mesmo controlador de ação design. Quando dou

             $uid=$this->Session->read('uid');
            echo "uid: ".$uid;

o valor não é ecoado.

Não posso usar a variável de sessão no mesmo controlador?

Foi útil?

Solução 5

Eu descobri a razão pela qual o uid não estava sendo ecoado (edit 3 parte da pergunta). É devido a um erro bobo, tinha um espaço em branco após a tag end?> No controlador. Agora está funcionando bem.

Outras dicas

A padaria é seu melhor amigo:

http://book.cakephp.org/view/398/Methods

Toda a sua sessão de leitura / escrita pertencem ao controlador:

$this->Session->write('Person.eyeColor', 'Green');

echo $this->Session->read('Person.eyeColor'); // Green

Em bolo php você pode Criar uma sessão como esta

$this->request->session()->write('user_id', 10);

e você pode valor da sessão de leitura como este

echo $this->request->session()->read('user_id');

Super Simples!

Você não tem que escrever qualquer código para criar sessão, eles já estão construídos dentro. Então você acabou de usar as sessões de leitura e gravação, como mencionado acima. Também veja aqui para mais detalhes:

http://book.cakephp.org/2.0 /en/core-libraries/components/sessions.html Usado em Controladores

http://book.cakephp.org/2.0 /en/core-libraries/helpers/session.html Usado em Visualizações

Neste caso, seria:

$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));

e sua segunda pergunta é anwered por Jason Miy ( http://api.cakephp.org / class / session-helper ). Você pode simplesmente usar isso em seu ponto de vista:

$userId = $session->read('User.UserId');

A leitura das páginas do livro de receitas apropriadas devagar e com cuidado geralmente ajuda muito ...

quando tenho comportamento da sessão estranha, e isso me ajuda.

MODELO:

 function clearAllDBCache() {
    $db =& ConnectionManager::getDataSource($this->useDbConfig);
    $db->_queryCache = array();
   }

`

Acess seu ajudante SessionHelper em lib/Cake/View/Helper/SessionHelper.php e adicionar o método:

public function write($name = null) {
    return CakeSession::write($name);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top