2009-07-07 7 views
8

alguien me puede dar un ejemplo sobre cómo crear Sesiones y escribir datos en él. He visto una sintaxis sobre cómo escribir datos en una sesión usando el comando de escritura. Pero cómo crear una sesión y recuperar los valores en ella.¿Cómo creo, escribo y leo datos de sesión en CakePHP?

En mi aplicación, tengo dos datos, form_id y user_id que deben utilizarse en todas las solicitudes de página. Entonces, ¿cómo lo guardo como una variable de sesión y lo uso en toda la aplicación?

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);    

} 

Cómo utilizar la variable de sesión 'User.UserId' en lugar de $ ID de usuario en $ this-> flash ('Cuenta de usuario creada', '/ formas/página de inicio/'. $ userId);

¿Y puedo usar esta variable en todos mis archivos de vista, porque en todas las solicitudes de página también paso el userId?

EDITAR 2

tengo 2 controladores, el usuario y la forma. Escribo el ID de usuario a una variable de sesión en el usuario _controlador. Tengo un archivo de vista llamado homepage.ctp, cuya acción se encuentra en el forms_controller. Ahora, ¿cómo puedo usar la variable de sesión definida en el users_controller en la página de inicio? Lo siento si estoy haciendo preguntas tontas. Revisé el libro de torta, pero mis dudas no fueron aclaradas. También estoy probando el método de prueba y error de codificación, así que por favor ayúdenme.

EDITAR 3

tengo una variable de sesión 'uid', que es el identificador de usuario en la acción página principal de un controlador.

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

Necesito la misma variable en el método de acción de diseño del mismo controlador. Cuando doy

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

el valor no se repite.

¿No puedo usar la variable de sesión en el mismo controlador?

Respuesta

0

me enteré de la razón por la cual no estaba siendo hizo eco de la UID (edición 3 parte de la pregunta). Se debe a un error tonto, ¿tenía un espacio en blanco después de la etiqueta de final?> En el controlador. Ahora está funcionando bien.

7

La panadería es su mejor amigo:

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

Toda la sesión de lectura/escribe pertenecen en el controlador:

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

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

código corto y dulce y de trabajo para todas las versiones :) –

0

En este caso sería:

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

y su segunda pregunta se anwered por Jason Miy (http://api.cakephp.org/class/session-helper). Simplemente puede utilizar esto en su vista:

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

lectura de las páginas del libro de cocina apropiados lentamente y con cuidado por lo general ayuda mucho ...

+0

tengo 2 controladores, usuario y formulario. Escribo el ID de usuario a una variable de sesión en el control de usuarios. Tengo un archivo de vista llamado homepage.ctp, cuya acción se encuentra en el forms_controller. ¿Ahora cómo puedo usar la variable de sesión definida en el users_controller en la página de inicio? Lo siento si estoy haciendo preguntas tontas. Revisé el libro de torta, pero mis dudas no fueron aclaradas. También estoy probando el método de prueba y error de codificación, así que por favor ayúdenme. – Angeline

+0

Como mencioné, puede usar el SessionHelper en sus vistas. Ver http://book.cakephp.org/view/484/Session y http://book.cakephp.org/view/567/Methods –

0

cuando tengo un comportamiento de sesión extraño, y esto me ayuda.

MODELO:

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

`

0

Acess su ayudante SessionHelper en lib/Cake/View/Helper/SessionHelper.php y añadir el método:

public function write($name = null) { 
    return CakeSession::write($name); 
} 
Cuestiones relacionadas