Pregunta

¿alguien puede darme un ejemplo de cómo crear sesiones y escribir datos en él. He visto la sintaxis sobre la forma de escribir datos en una sesión con el comando de escritura. Pero, ¿cómo crear una sesión y recuperar los valores en ella.

En mi solicitud, tengo dos datos, form_id y user_id que necesita ser utilizado en todas las solicitudes de página. Entonces, ¿cómo puedo guardar como una variable de sesión y lo uso a través de 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 / homepage /'. $ userId );

Y puedo usar esta variable en todos mis archivos de vista, porque en todas las solicitudes de páginas que también pasan el ID de usuario?

EDIT 2

Tengo 2 controladores, el usuario y la forma. Escribo el ID de usuario para una variable de sesión en los usuarios _controller. Tengo un archivo de vista llamada homepage.ctp, cuya acción es en el forms_controller. Ahora, ¿cómo puedo usar la variable de sesión definido en el users_controller en la página de inicio? Lo siento si estoy haciendo preguntas tontas. Fui a través de la cakebook, pero mis dudas no fueron despejadas. También estoy tratando método de ensayo y error de codificación, así que por favor me ayude.

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 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?

¿Fue útil?

Solución 5

descubrí la razón por la que el fluido no estaba siendo eco (3 editar parte de la pregunta). Es debido a un error tonto, tenía un espacio en blanco después de la etiqueta de cierre?> En el controlador. Ahora se está trabajando muy bien.

Otros consejos

La panadería es su mejor amigo:

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

Todo su sesión de lectura / escritura en el controlador pertenecen:

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

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

En php torta puede crear la sesión como esto

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

y puede valor de sesión lee como esto

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

Super simple!

Usted no tiene que escribir ningún código para crear la sesión, que ya están construidas. A continuación, sólo tiene que utilizar la lectura y escritura sesiones como se mencionó anteriormente. También ver aquí para más detalles:

http://book.cakephp.org/2.0 /en/core-libraries/components/sessions.html Se utiliza en los controladores

http://book.cakephp.org/2.0 /en/core-libraries/helpers/session.html Se utiliza en Vistas

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 / clase / sesión-helper). Simplemente puede utilizar esto en su vista:

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

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

cuando tengo comportamiento de la sesión extraña, y esto me ayudo.

MODELO:

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

`

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top