2016-12-05 2 views
1

Iḿ с использованием ZF3, и я создаю службу, которая обеспечит широкий сегментированный доступ приложения к контейнеру сеанса приложения. Эта услуга называется SessionContainerManager и будет иметь методы для получения и идентификации пользователя, обновление списков управления доступом пользователей и т.д. Мой код:Как получить доступ к контейнеру сеанса с использованием ZF3?

namespace User\Service; 

class SessionContainerManager 
{ 
    /** 
    * Service container. 
    * @var Zend\Service\Container 
    */ 
    private $sessionContainer; 


    public function __construct($sessionContainer) 
    { 
     $this->sessionContainer = $sessionContainer; 
    } 

    public function getACLList() 
    { 
     return $this->sessionContainer->aclList; 
    } 

    public function setACLList($aclList) 
    { 
     $this->sessionContainer->aclList = $aclList; 
    } 

    public function getIdentity() 
    { 
     return $this->sessionContainer->identity; 
    } 

    public function setIdentity($identity) 
    { 
     $this->sessionContainer->identity = $identity; 
    } 

} 

И его фабрика:

namespace User\Service\Factory; 

use Interop\Container\ContainerInterface; 
use User\Service\SessionContainerManager; 
use Zend\Session\Container; 

class SessionContainerManagerFactory 
{ 
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null) 
    {   
     $sessionContainer = $container->get(\Zend\Session\Container::class); 

     return new SessionContainerManager($sessionContainer); 
    } 
} 

В module.config:

'service_manager' => [ 
    'factories' => [ 
     Service\SessionContainerManager::class => Service\Factory\SessionContainerManagerFactory::class, 
    ], 

При запуске приложения я получаю следующее сообщение об ошибке:

File: 

    /home/renato/project/dev/fways/php/fways/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:670 

Message: 

    Unable to resolve service "Zend\Session\Container" to a factory; are you certain you provided it during configuration? 

Помогите оценить работу этого контейнера сеанса.

ответ

-1

Это вызвано кэшированием конфигурации модуля. Он был сгенерирован в первый раз, чтобы ускорить настройку чтения. Таким образом, после добавления новой конфигурации службы всегда удаляйте кеш в data/cache/module-config-cache.application.config.cache.php. Он будет создан автоматически, если не найден.

0

проверить эту ссылку working with Sessions in zf3 Возможно, вы не получили этот пакет в первую очередь. Если это не в вашем композиторе, попробуйте это добавить:

php composer.phar require zendframework/zend-session 
Смежные вопросы