10

Zend Framework 2でセッションを起動して実行するための最良の方法は何ですか?index.phpファイルで設定を試みましsession_start()たが、オートローダーがブートストラップされる前に実行され、セッションに不完全なオブジェクトが存在することになります。

ZF1では、構成にいくつかのオプションを追加することでセッションを初期化できますが、ZF2でこれを行う方法がわかりません。

4

1 に答える 1

27

私があなたを正しく理解しているなら、あなたがしたいのはあなたのセッションをあなたのモジュールで正しく機能させることだけですか?それが正しいと仮定すると、2つの単一のステップがあります。

1)構成を作成します:module.config.php

return array(
    'session' => array(
        'remember_me_seconds' => 2419200,
        'use_cookies' => true,
        'cookie_httponly' => true,
    ),
);

2)セッションを開始します:Module.php

use Zend\Session\Config\SessionConfig;
use Zend\Session\SessionManager;
use Zend\Session\Container;
use Zend\EventManager\EventInterface;

public function onBootstrap(EventInterface $evm)
{
    $config = $evm->getApplication()
                  ->getServiceManager()
                  ->get('Configuration');

    $sessionConfig = new SessionConfig();
    $sessionConfig->setOptions($config['session']);
    $sessionManager = new SessionManager($sessionConfig);
    $sessionManager->start();

    /**
     * Optional: If you later want to use namespaces, you can already store the 
     * Manager in the shared (static) Container (=namespace) field
     */
    Container::setDefaultManager($sessionManager);
}

\ Zend \ Session \ Config\SessionConfigのドキュメントで他のオプションを見つけてください

Cookieも保存したい場合は、この質問を参照してください。アンドレアス・リンデンの最初の答えの功績-私は単に彼をコピーして貼り付けています。

于 2012-10-08T06:19:04.627 に答える