簡體   English   中英

CakePHP:$ user [$ this-> Auth-> getModel()-> alias]?

[英]CakePHP: $user[$this->Auth->getModel()->alias]?

我很難理解這里發生的事情

class AppController extends Controller {
...
public function beforeFilter() {
    $user = $this->Auth->user();
    if (!empty($user)) {            
        Configure::write('User', $user[$this->Auth->getModel()->alias]);
    }
}
...
}

在我的例子中

  1. $ user =數組([id] => 1 [username] => user [active] => 1 [email] => user@site.com)

  2. $ this-> Auth-> getModel()-> alias ='User'(字符串)

  3. $ user [$ this-> Auth-> getModel()-> alias] =數組([id] => 1 [username] => user [active] => 1 [email] => user@site.com)

我的問題:

  1. $ user ['User']和$ user怎么一樣? 在我看來,$ user是一個具有鍵ID,用戶名,活動和電子郵件的關聯數組。 我不確定如何使用鍵“用戶”。

  2. 有人可以解釋“ ::”語法以及Configure :: write('User',...)的功能以及如何訪問此'User'變量(可能對此有一些常規術語。)。 我發現Configure :: read('User')檢索此信息。 這是正確的嗎?

  3. 最后,我對兩個術語用戶(在$ this-> User-> create()中創建新用戶的模型)和用戶(來自Configure :: write('User',...))感到困惑。 它們是不一樣的東西,對嗎?

您可以將不同的模型與AuthComponent一起使用。 默認值為User ,但您可以將其設置為MemberAdmin或其他稱為用戶模型的名稱。 調用$this->Auth->user()返回一個數組,該數組附加了其主要名稱,例如:

array(
    'Admin' => array(
        'id' => ...
        ...
    )
)

(我懷疑您在那里錯誤地調試了$user變量。)

代碼塊唯一要做的就是將用戶詳細信息寫入配置(只是存儲值的位置)而無需此中間Admin鍵。 我想這是什么地方的任何代碼段都可以獲取當前用戶的詳細信息,而不必擔心它是$user['User']還是$user['Admin']或其他。 相反,您可以簡單地使用Configure::read('User')Configure::read('User.id')Configure::read('User.name')等。

Configure::write('User', ...)名稱User的選擇完全是任意的。 您可以在那里使用任何東西,它沒有預定義的含義。

順便說一句,如果只是控制器,您可以使用$this->Auth->user('name') (例如,獲取名稱$this->Auth->user('name')來獲取當前用戶的詳細信息,而不必擔心用戶模型的名稱。

$ user ['User']和$ user不能是同一個人。 您使用什么代碼檢查$ user ['User']和$ user的內容? “ ::”是訪問類函數和變量的方式。 “->”是訪問對象函數和變量的方式。 它不允許訪問“用戶”變量(只是字符串,不是變量)。 因此, Configure::write()將在類Configure中調用write()類方法。

$ this-> User-> create()和Configure :: write('User',...)是完全不同的東西。 $ this-> User是User類的對象。 “用戶”只是一個字符串。

最后,這段代碼要做的是將會話中的登錄用戶記錄(由Auth組件存儲)復制到運行時配置單例類Configure。 $this->Auth->getModel()->alias只是獲取$ user數組的鍵。 因為可以將Auth配置為使用其他模型進行身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM