2016-01-06 4 views
0

У меня возникли трудности с чтением сеанса пользователя в пользовательской модели.Zend 2 - сеанс пользователя не работает

При извлечении пользовательских данных из любой другой модели он отлично работает.

module.php

'session' => function ($sm) { 
       $config = $sm->get('config'); 
       if (isset($config['session'])) { 
        $session = $config['session']['config']['options']['name']; 

        //Various Session options 
        $manager = new \Zend\Session\SessionManager();       

        if(filter_input(INPUT_SERVER, 'APPLICATION_ENV') === 'production'){ 

         $manager->getConfig() 
           ->setCookieHttpOnly(true) 
           ->setCookieSecure(false); 
         $manager->start(); 

        } 

        return new Session($session); 
       } 
      }, 

BaseTable.php

public function getIdentity($property = null) { 
    $storage = $this->getServiceLocator()->get('session'); 

    if (!$storage) { 
     return false; 
    } 

    $data = $storage->read(); 

    if ($property && isset($data[$property])) { 
     return $data[$property]; 
    } 

    return $data; 
} 

Когда я называю getIdentity функция, где tb_usuario экземпляр я получаю эту ошибку:

Fatal error: Call to a member function get() on a non-object in C:\wamp\www\sigaAvaliacoes\module\application\src\Application\Model\BaseTable.php on line 73

К сожалению мой английский, спасибо!

ответ

0

Извините, ребята, я нашел эту проблему, в module.php я не экземпляр ServiceLocator:

'Usuario' => function($sm) { 
       $tableGateway = new TableGateway('tb_usuario', $sm->get('db_adapter_main')); 
       return new Model\Usuario($tableGateway); 
      }, 

Сейчас работа:

'Usuario' => function($sm) { 
       $tableGateway = new TableGateway('tb_usuario', $sm->get('db_adapter_main')); 
       $updates = new Model\Usuario($tableGateway); 
       $updates->setServiceLocator($sm); 
       return $updates; 
      }, 

Thanks = D

Смежные вопросы