2011-03-02 45 views
2

通过ZF中的不同操作访问会话变量时出现问题。在Zend框架中引导和访问会话变量

这里是引导程序的内容:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 

    protected function _initSession() 
    { 
      Zend_Session::start(); 
      $sessionUser = new Zend_Session_Namespace('sessionUser'); 
    } 

} 

我分配到$ sessionUser变量在索引控制器:

    $sessionUser->userId = $res->userId; 
        $sessionUser->organisationId = $res->organisation_organisationId; 
        $sessionUser->forename = $res->forename; 

并尝试访问在管理员控制变量:

$sessionUser->organisationId 

但我收到错误:

Notice: Undefined variable: sessionUser in /usr/local/zend/apache2/htdocs/SA1/application/controllers/AdministratorController.php on line 17 Notice: Trying to get property of non-object in /usr/local/zend/apache2/htdocs/SA1/application/controllers/AdministratorController.php on line 17 

和想法什么可能导致这种情况?

非常感谢

回答

4

获取会话变量回到你的控制器,你也需要做:

$sessionUser = new Zend_Session_Namespace('sessionUser'); 
+0

该死,你输入的比我快。 ;-) – 2011-03-02 11:08:58

+0

@David Weinraub。 :-) – Marcin 2011-03-02 11:10:51

+0

Doh!我认为在Bootstrap中定义的变量会让所有控制器都可用。谢谢你的帮助。 – kaese 2011-03-02 11:26:29

4

好了,你所得到的错误是显而易见的。 $ sessionUser未定义。

您必须在赋值之前初始化这样的变量。把它放在你的控制器里:

$sessionUser = new Zend_Session_Namespace('sessionUser'); 
+0

感谢理查德,现在通过将任务插入控制器来对它进行排序。 – kaese 2011-03-02 11:26:53