Como faço para criar, escrever e ler dados da sessão em CakePHP?
-
11-09-2019 - |
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?
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 ??strong>
$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);
}