2011-03-02 61 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