我很难理解这里发生了什么
class AppController extends Controller {
...
public function beforeFilter() {
$user = $this->Auth->user();
if (!empty($user)) {
Configure::write('User', $user[$this->Auth->getModel()->alias]);
}
}
...
}
在我的例子中......
$ user = Array([id] => 1 [username] => user [active] => 1 [email] => user@site.com)
$ this-> Auth-> getModel() - > alias ='User'(string)
$ user [$ this-> Auth-> getModel() - > alias] = Array([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()创建一个新用户)和User(来自Configure :: write('User) ”,...))。它们不是一回事,是吗?
答案 0 :(得分:1)
您可以将不同的模型与AuthComponent一起使用。默认值为User
,但您可以将其设为Member
,Admin
或其他任何用户模型。调用$this->Auth->user()
会返回一个附加了该主名称的数组,例如:
array(
'Admin' => array(
'id' => ...
...
)
)
(我怀疑你正在调试你的$user
变量错误。)
代码块的唯一作用是将用户详细信息写入Configuration(只是存储值的位置),而不使用此中间Admin
键。我想这是任何地方的任何代码都可以获得当前用户的详细信息,而不必担心它是$user['User']
还是$user['Admin']
或其他什么。相反,您只需使用Configure::read('User')
或Configure::read('User.id')
或Configure::read('User.name')
等。
在User
中选择名称Configure::write('User', ...)
完全是任意的。你可以在那里使用任何东西,它没有预定义。
$this->Auth->user('name')
调用用户模型的内容(例如获取名称)。
答案 1 :(得分:0)
$ user ['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可以配置为使用其他模型进行身份验证。