2013-02-01 39 views
1

我在我的應用程序中修復了一個標題(保存在View/Elements/header.ctp)。唯一改變的是對用戶的問候。它根據誰登錄加載「嗨,皮特」或「嗨,戴夫」等。訪問標頭中的數據庫信息 - cakePHP

此問候語位於標題中,因爲它顯示在每個頁面上。

我想知道的是,我有可能從數據庫中獲取用戶名嗎?

這是我的數據庫設置

用戶的名稱存儲在一個表中調用HrEmployees。用戶的登錄詳細信息存儲在Users中。 Users有一個字段,employee_id,鏈接到HrEmployees中的員工ID。所以我需要取用戶的ID並找回他的名字。

問題

這是可能的頭呢?如果是這樣,我該怎麼做?如果有任何其他信息需要,讓我知道,我會張貼它。

回答

1

是的,這是可能的。這取決於你的Auth設置的具體情況,但基本上,你首先必須確保Cake的Auth組件獲取已登錄用戶的鏈接HrEmployees記錄,然後在beforeFilter的視圖變量中設置登錄用戶名稱你的AppController的方法,所以它可以在你所有的視圖中使用。

第一部分,確保驗證包括所鏈接的HrEmployee可能是這個樣子:有關身份驗證這裏

$this->Auth->authenticate = array(
    'Form' => array(
     'userModel' => 'User', 
     'contain' => array(
      'HrEmployee'=>array(
       'fields' => array('id', 'name') 
      ) 
     ) 
    ) 
); 

更多信息:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

而接下來的部分,設置您的視圖變量,應該在AppController.php的beforeFilter()方法來完成,而可能是這個樣子:

$this->set('loggedInUsersName', $this->Auth->user('HrEmployee.name')); 

然後,你可以只[R在你的任何視圖文件中都會使用$ loggedInUsersName,並且它應該包含正確的值。

+0

謝謝。這是一個很好的答案。易於理解,易於實施,而不僅僅是有人bar出'閱讀手冊!'。對此,我真的非常感激。 – Albert

相關問題