cakephp3 - setflash cakephp
¿Cómo creo, escribo y leo datos de sesión en CakePHP? (6)
¿Alguien puede darme 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.
En mi aplicación, tengo dos datos, form_id y user_id que deben usarse 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 usar la variable de sesión ''User.UserId'' en lugar de $ userId en $ this-> Flash (''Cuenta de usuario creada'', ''/ forms / homepage /''. $ 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?
EDIT 2
Tengo 2 controladores, usuario y formulario. Escribo el ID de usuario en una variable de sesión en el controlador 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.
EDIT 3
Tengo una variable de sesión ''uid'', que es la identificación del usuario en la acción de la página de inicio 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?
En este caso sería:
$this->Flash(''User account created'',''/forms/homepage/''.$this->Session->read(''User.UserId''));
y su segunda pregunta es dirigida por Jason Miy ( http://api.cakephp.org/class/session-helper ). Simplemente puede usar esto en su vista:
$userId = $session->read(''User.UserId'');
Leer las páginas apropiadas de libros de cocina lenta y cuidadosamente por lo general ayuda mucho ...
La panadería es tu mejor amiga:
http://book.cakephp.org/view/398/Methods
Todas sus lecturas / escrituras de sesión pertenecen al controlador:
$this->Session->write(''Person.eyeColor'', ''Green'');
echo $this->Session->read(''Person.eyeColor''); // Green
Descubrí la razón por la cual el uid no se repetía (edite 3 partes de la pregunta). Se debe a un error tonto, ¿tenía un espacio en blanco después de la etiqueta final?> En el controlador. Ahora está funcionando bien.
cuando tengo un comportamiento de sesión extraño, y esto me ayuda.
MODELO:
function clearAllDBCache() {
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$db->_queryCache = array();
}
`
No tiene que escribir ningún código para crear una sesión, ya están integrados. Luego, simplemente use las sesiones de lectura y escritura como se mencionó anteriormente. También vea aquí para más detalles:
http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html Utilizado en controladores
http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html Utilizado en vistas
Acceda a su Helper SessionHelper en lib/Cake/View/Helper/SessionHelper.php
y agregue el método:
public function write($name = null) {
return CakeSession::write($name);
}