2014-02-09 49 views
0

我的應用程序中的導航欄將包含User信息(名稱,配置文件圖片)和一些關聯的數據。由於導航欄將出現在整個應用程序中,爲了將數據傳遞到View(本例中爲Element nav_bar),我將其邏輯放入AppController::beforeRender()之內。CakePHP導航欄邏輯

  1. 這是實現檢索用戶信息和關聯數據的邏輯的正確位置嗎?
  2. 以下哪一項是加載User模型數據的正確方法。

    public function beforeRender() { 
        $this->loadModel('User'); // this one 
        $this->User->find(...      
    
        ClassRegistry::init('User')->find(... // Or this one? 
    

回答

2

我會保存在一個會話的用戶信息,否則你將被打在每一個請求的數據庫。

所以,你想要做的是:在你的login()函數中,你得到用戶信息並保存在Session中。然後,在您的元素中,您只需從會話中回顯您想要的內容。

+0

這是一個好主意,但有一些額外的數據可能在用戶登錄時發生變化,如果我將數據存儲在會話中,則無法知道數據是否已更改 –

+0

@ChristopherFrancisco無論您身在何處,只要您想要就可以更改會話想。 –

-1

在您看來,使用AuthComponent類訪問用戶信息,例如:

到havethe的用戶ID:$use_id = AuthComponent::user('id');

擁有的用戶的所有信息:$user = AuthComponent::user();

+1

您不在視圖中使用組件,您打破了MVC原則 –