Как загрузочные сессии в Zend Framework 2

Каков наилучший способ начать работу в Zend Framework 2? Я попытался установить session_start() в свой файл index.php, но затем он запускается до того, как будут загружены загружаемые автозагрузчики, что приведет к неполным объектам, сидящим на моих сеансах.

В ZF1 вы можете инициализировать сеансы, добавив некоторые параметры в конфигурацию, но я не понимаю, как это сделать в ZF2.

Ответ 1

Если я понимаю вас правильно, все, что вы хотите сделать, это правильно работать в ваших модулях? Предположим, что есть два отдельных шага.

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, см. этот вопрос. Кредиты Андреасу Линдену за его первоначальный ответ - я просто копирую его.