2012-01-24 18 views
29

¿Alguien prueba zf2? No puedo entender el nuevo mecanismo de uso de sesiones en zf2. ¿Cómo puedo escribir y leer desde/hacia la sesión en el nuevo Zend Framework?¿Cómo usar Zend Session en zf2?

También no puedo encontrar ningún ejemplo en Internet.

+1

¿Esa respuesta realmente ayuda? ¿Qué acabaste encontrando? –

+1

Encontré un ejemplo en Zend \ Authentication \ Storage \ Session.php. Por ejemplo, puede escribir en una sesión como esta '$ session-> offsetSet ('email', $ email);', compruebe que existe archivo así '' session-> offsetExists ('email') 'y obtenga el campo con este código ejecución: '$ session-> offsetGet ('email')'. Entonces, es eso lo que estaba buscando. – rdo

+4

También la sesión se puede iniciar por '$ session = new Container ('base');' donde container es 'Zend \ Session \ Container' – rdo

Respuesta

68

Algunos ejemplos de ZF2 uso de sesiones: la creación

Sesión:

use Zend\Session\Container; 
$session = new Container('base'); 

Compruebe que la clave existe en la sesión:

$session->offsetExists('email') 

valor Obtención de la sesión clave:

$email = $session->offsetGet('email'); 

Valor de ajuste en la sesión:

$session->offsetSet('email', $email); 

valor desarmado en la sesión:

$session->offsetUnset('email'); 

Y otra manera fácil de utilizar de sesión son:

$session = new Container('foo'); 

// estos son un ll medio equivalente, para el mismo fin

$session['bar'] = 'foobar'; 

$session->bar = 'foobar'; 

$session->offsetSet('bar', 'foobar'); 
+10

Ah, por favor, no use los métodos de ** ArrayAccess ** directamente. Esto es moveton 'Zend \ Session \ Container' también implementa ** ArrayObject ** personalizado, lo que significa que puede establecer, obtener y verificar propiedades como lo hace con el objeto. Ver mi respuesta arriba – dVaffection

+0

En caso de Aviso o Advertencia, puede usar esto como: $ session-> offsetSet ('admin', new \ stdClass()); Luego: $ session-> admin-> username = 'John'; –

3

Actualmente estoy trabajando con zf2. He encontrado el uso de Sesiones en:

Zend\Authentication\Storage\Session.php

Tal vez usted puede encontrar su respuesta allí.

-1

Para iniciar una sesión es necesario utilizar

zend\session\container 
17

Definitivamente sí, se debe utilizar Zend \ Session \ Container

de contenedores se extiende de ArrayObject y crea una instancia con ARRAY_AS_PROPS bandera que significa que se puede recorrer fácilmente a través de las propiedades y leer/escribirlos, por ejemplo

use Zend\Session\Container as SessionContainer; 

$this->session = new SessionContainer('post_supply'); 
$this->session->ex = true; 
var_dump($this->session->ex); 

primer argumento es sesión de espacio de nombres y segundos - Gestor. Manager es una fachada para Storage y SaveHandler y está configurado con ConfigInterface para guardar sus datos de sesión en el servidor de base de datos o Memcache.

+1

El uso de guiones bajos para campos o métodos protegidos ya no está de moda;). Principalmente porque los IDEs modernos hacen que la práctica sea obsoleta y el subrayado hace que las cosas se vean feas. – markus

+0

2 markus-tharkun Sí, lo sé y ya no lo uso;) – dVaffection

+0

Soy un principiante de zend. Quiero saber cómo usar SessionContainer en zf2. En mi opinión, una aplicación web debería tener solo una sesiónContainer, ¿verdad? Entonces, ¿cómo obtener la sesiónContainer en el controlador y ver? – inza9hi

1

Si está intentando utilizar la sesión en su acción de inicio de sesión, puede utilizar: "Zend\Authentication\AuthenticationService". También autentica el usuario y almacena la sesión.

getStorage()->write($contents) almacenará la sesión.

0

bien aquí está el breve ejemplo. he implementado con respecto al mantenimiento de la sesión sobre la autenticación exitosa del usuario.

<?php 
$registry = Zend_Registry::getInstance(); 
$DB = $registry['DB']; 
$authAdapter = new Zend_Auth_Adapter_DbTable($DB); 
$authAdapter->setTableName('user'); 
$authAdapter->setIdentityColumn("user_name"); 
$authAdapter->setCredentialColumn("user_password"); 
//get values 
$username = $request->getParam('username'); 
$password = $request->getParam('password'); 
//set values 
$authAdapter->setIdentity($username); 
$authAdapter->setCredential($password); 

$auth = Zend_Auth::getInstance(); 
//to store in session 
$auth->setStorage(new Zend_Auth_Storage_Session('front')); 

$authResult = $auth->authenticate($authAdapter); 
if ($authResult->isValid()) { 
    $authAdap = $authAdapter->getResultRowObject(null, "Password"); 
    $auth->getStorage()->write($authAdap); 
    $this->_redirect('/login/controlpannel'); 
} else { 
    $this->_redirect('/login/login'); 
} 
?> 

conseguir valores o comprobar los datos almacenados en la sesión de usuario relacionados con

<?php 
$auth = Zend_Auth::getInstance(); 
$auth->setStorage(new Zend_Auth_Storage_Session('front')); 
if($auth->hasIdentity()){ 
    $data = $auth->getStorage()->read(); 
    print_r($data); 
}else{ 
    $this->_redirect('/login/login'); 
} 
?> 

esperanza que esto podría ayudar a alguien

+0

Esta respuesta se publicó el 11 de julio de 2014, no en julio de 2011. –

0
use Zend\Session\Container; 

public function createAction(){ 
    $session = new Container('name'); 
    $session->offsetSet('session_variable', $value); 
} 
//the above codes are used for create session. 

public function take_valuesAction(){ 
    $session = new Container('name'); 
    echo $value = $session->offsetGet('session_variable'); 
} 
//the above codes are used for take values from session. 

public function destroyAction(){ 
    $session = new Container('name'); 
    $session->getManager()->destroy(); 
} 
//the above codes are used for destroy the session. 
Cuestiones relacionadas