web-dev-qa-db-ja.com

zf2でZend \ Sessionを使用する方法は?

誰かがzf2を試しますか? zf2でセッションを使用する新しいメカニズムを理解できません。新しいzendフレームワークでセッションに読み書きするにはどうすればよいですか?

また、私はインターネットで例を見つけることができません。

29
rdo

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'); 
68
rdo

間違いなく、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);

最初の引数はセッション名前空間で、2番目はManagerです。 ManagerStorageおよびSaveHandlerのファサードであり、セッションデータをDBまたはMemcacheサーバーに保存するためにConfigInterfaceで構成されます。

17
dVaffection

現在zf2を使用しています。セッションの使用法を見つけました:

Zend\Authentication\Storage\Session.php

答えが見つかるかもしれません。

3
ohartl

ログインアクションでセッションを使用しようとしている場合は、「_Zend\Authentication\AuthenticationService_」を使用できます。ユーザーとストアのセッションも認証します。

getStorage()->write($contents)はセッションを保存します。

1
musafar006

ここに簡単な例を示します。ユーザーの認証が成功したときにセッションを維持することに関して実装しました。

<?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
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