¿Cómo puedo crear, escribir y leer datos de la sesión en CakePHP?
-
11-09-2019 - |
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?
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);
}