Как использовать Zend \ Session в zf2? - PullRequest
29 голосов
/ 24 января 2012

Кто-нибудь пробовал zf2? Я не могу понять новый механизм использования сессий в ZF2. Как я могу писать и читать в / из сессии в новой Zend Framework?

Также не могу найти ни одного примера в интернете.

Ответы [ 7 ]

68 голосов
/ 18 июня 2012

Некоторые примеры использования сеансов zf2:

Создание сеанса:

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

Убедитесь, что ключ существует в сеансе:

$session->offsetExists('email')

Получение значения из сеанса с помощьюклавиша:

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

Установка значения в сеансе:

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

Сброс значения в сеансе:

$session->offsetUnset('email');

И другой простой способ использования сеанса:

$session = new Container('foo');

// все это эквивалентные средства для одного и того же конца

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

$session->bar = 'foobar';

$session->offsetSet('bar', 'foobar'); 
17 голосов
/ 26 сентября 2012

Определенно да, вы должны использовать Zend \ Session \ Container

Контейнер расширяется до ArrayObject и создается с флагом ARRAY_AS_PROPS, что означает, что вы можете легко перебирать свойства и читать / записывать их, например,

use Zend\Session\Container as SessionContainer;

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

Первый аргумент - это пространство имен сессии, а второй - Manager . Manager - это фасад для Storage и SaveHandler, и он настроен на ConfigInterface для сохранения данных сеанса в БД или на сервере Memcache.

3 голосов
/ 27 января 2012

Я сейчас работаю с zf2.Я нашел использование Сессий в:

Zend\Authentication\Storage\Session.php

Может быть, вы можете найти свой ответ там.

1 голос
/ 29 октября 2013

Если вы пытаетесь использовать сеанс в действии входа в систему, вы можете использовать: "Zend\Authentication\AuthenticationService". Аутентифицирует пользователя и сеанс хранилища.

getStorage()->write($contents) сохранит сеанс.

0 голосов
/ 07 февраля 2018
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 голосов
/ 11 июля 2014

ну вот краткий пример.я реализовал в отношении поддержания сеанса при успешной аутентификации пользователя.

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

получение значений или проверка данных, сохраненных в сеансе, относящемся к пользователю

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

надеюсь, это может кому-то помочь

0 голосов
/ 25 мая 2012

Для начала сеанса необходимо использовать

zend\session\container
...