29

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

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

4

7 に答える 7

67

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'); 
于 2012-06-18T03:13:23.737 に答える
17

はい、間違いなく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です。ManagerはファサードでStorageあり、セッション データを DB または Memcache サーバーに保存するためにSaveHandler構成されています。ConfigInterface

于 2012-09-26T06:25:39.997 に答える
3

私は現在zf2で作業しています。セッションの使用法を次の場所で見つけました。

Zend\Authentication\Storage\Session.php

そこにあなたの答えが見つかるかもしれません。

于 2012-01-26T23:53:46.297 に答える
1

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

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

于 2013-10-29T06:44:50.617 に答える
0

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

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

これが誰かを助けることを願っています

于 2014-07-11T07:44:32.307 に答える
-1

セッションを開始するには、使用する必要があります

zend\session\container
于 2012-05-24T23:53:39.530 に答える