[英]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]);
}
}
...
}
在我的例子中
$ user =數組([id] => 1 [username] => user [active] => 1 [email] => user@site.com)
$ this-> Auth-> getModel()-> alias ='User'(字符串)
$ user [$ this-> Auth-> getModel()-> alias] =數組([id] => 1 [username] => user [active] => 1 [email] => user@site.com)
我的問題:
$ user ['User']和$ user怎么一樣? 在我看來,$ user是一個具有鍵ID,用戶名,活動和電子郵件的關聯數組。 我不確定如何使用鍵“用戶”。
有人可以解釋“ ::”語法以及Configure :: write('User',...)的功能以及如何訪問此'User'變量(可能對此有一些常規術語。)。 我發現Configure :: read('User')檢索此信息。 這是正確的嗎?
最后,我對兩個術語用戶(在$ this-> User-> create()中創建新用戶的模型)和用戶(來自Configure :: write('User',...))感到困惑。 它們是不一樣的東西,對嗎?
您可以將不同的模型與AuthComponent一起使用。 默認值為User
,但您可以將其設置為Member
, Admin
或其他稱為用戶模型的名稱。 調用$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.