Zend 2 - 用户会话不起作用

时间:2016-01-06 17:08:16

标签: php session zend-framework2

我在用户模型中读取已记录用户的会话时遇到了困难。

从任何其他模型中检索用户数据时,它可以完美运行。

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实例化时出现此错误:

  

致命错误:在非对象中调用成员函数get()   C:\瓦帕\ WWW \ sigaAvaliacoes \模块\应用\ SRC \应用程序\模型\ BaseTable.php   第73行

对不起我的英文,谢谢!

1 个答案:

答案 0 :(得分: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;
            },

谢谢= D