2012-01-24 39 views
29

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

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

+1

を助けることができる希望その答えは本当に助けていましたか?あなたは何を見つけたのですか? –

+1

Zend \ Authentication \ Storage \ Session.phpに例があります。例えば、この '$ session-> offsetSet( 'email'、$ email);'のようなセッションに書くと、 '$ session-> offsetExists( 'email')'のようなファイルが存在することを確認し、このコードでフィールドを取得します実行: '$ session-> offsetGet( 'email')'。それで、私が探していたものです。 – rdo

+4

またセッションは '$ session = new Container( 'base');'コンテナが 'Zend \ Session \ Container'で始めることができます – rdo

答えて

68

いくつかの例を使用する必要がセッションを開始するには、次の

セッションの作成:

:キーがセッションに存在することを

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

//これらはLL相当は

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

$session->bar = 'foobar'; 

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

ああ、** ArrayAccess **メソッドを直接使用しないでください。これはmovetonです。 'Zend \ Session \ Container'もカスタム** ArrayObject **を実装しています。つまり、オブジェクトのようにプロパティを設定、取得、チェックすることができます。上の私の答えを参照してください – dVaffection

+0

注意または警告の場合は、次のようにこれを使用できます:$ session-> offsetSet( 'admin'、new \ stdClass());次に、$ session-> admin-> username = 'John'と入力します。 –

3

私は現在zf2で作業しています。たぶん、あなたがあなたの答えを見つけることができます

Zend\Authentication\Storage\Session.php

:私は中のセッションの使用を発見しました。

-1

あなたはZF2セッションの使用状況の

zend\session\container 
17

は間違いなくはい、あなたはZendの\セッション\コンテナ

コンテナが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のセッション名前空間とあります。 ManagerStorageSaveHandlerのファサードで、セッションデータをDBまたはMemcacheサーバーに保存するためにConfigInterfaceで構成されています。

+1

保護されたフィールドまたはメソッドにアンダースコアを使用することは、これ以上流行にはなりません。主に、現代のIDEは実践を廃止し、アンダースコアは見栄えの悪いものに見えるからです。 – markus

+0

2 markus-tharkun 私はもう知っているし、もう使用しないでね;) – dVaffection

+0

私はzendの初心者です。 zf2でSessionContainerを使用する方法を知りたい私の意見では、1つのWebアプリケーションにはsessionContainerが1つだけ必要です。どのようにコントローラとセッションでsessionContainerを取得するのですか? – inza9hi

1

ログイン操作でセッションを使用する場合は、「Zend\Authentication\AuthenticationService」を使用できます。それはユーザーとストアセッションも認証します。

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

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

に関連したセッションに格納されたデータをチェックし、これが誰か

+0

この回答は2011年7月ではなく、2014年7月11日に投稿されました。 –

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. 
関連する問題