web-dev-qa-db-fra.com

Comment utiliser Zend\Session dans zf2?

Est-ce que quelqu'un essaie ZF2? Je ne comprends pas le nouveau mécanisme d’utilisation des sessions dans zf2. Comment puis-je écrire et lire dans la session dans le nouveau framework zend?

Aussi, je ne trouve aucun exemple sur Internet.

29
rdo

Quelques exemples d'utilisation des sessions zf2:

Création de session:

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

Vérifiez que la clé existe en session:

$session->offsetExists('email')

Obtenir de la valeur de la session par clé:

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

Valeur de réglage en session:

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

Valeur de compensation en session:

$session->offsetUnset('email');

Et un autre moyen facile d’utiliser la session sont: 

$session = new Container('foo');

// ce sont tous des moyens équivalents au même but

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

$session->bar = 'foobar';

$session->offsetSet('bar', 'foobar'); 
68
rdo

Oui, vous devriez utiliser Zend\Session\Container

Le conteneur s’étend de ArrayObject et instancie avec l’indicateur ARRAY_AS_PROPS, ce qui signifie que vous pouvez facilement parcourir les propriétés et les lire/écrire, par exemple.

use Zend\Session\Container as SessionContainer;

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

Le premier argument est l'espace de noms de session et le second - Manager. Manager est une façade pour Storage et SaveHandler et elle est configurée avec ConfigInterface afin de sauvegarder vos données de session dans un serveur DB ou Memcache. 

17
dVaffection

Je travaille actuellement avec zf2. J'ai trouvé l'utilisation de Sessions en: 

Zend\Authentication\Storage\Session.php 

Peut-être que vous pouvez trouver votre réponse ici.

3
ohartl

Si vous essayez d'utiliser session dans votre action de connexion, vous pouvez utiliser: "Zend\Authentication\AuthenticationService". Il authentifie également l'utilisateur et la session de stockage.

getStorage()->write($contents) va stocker la session.

1
musafar006

bien voici le bref exemple. J'ai implémenté en ce qui concerne le maintien de session sur l'authentification réussie de l'utilisateur.

<?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');
}
?>

obtenir des valeurs ou vérifier les données stockées dans la session liée à l'utilisateur

<?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');
 }
?>

espérons que cela pourrait aider quelqu'un

0
zoomi
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.
0
Hajis Hakkim