访问模型中的 Auth 组件

Access Auth component in Model

我想创建一个行为,以便在使用登录用户的 ID 保存记录时自动填充 'created_by' 字段,就像时间戳对 'created' 所做的那样。但是,显然您可以在模型中的任何地方 除了 获得 $this->Auth->user('id')。

我不得不求助于在 save() 调用之前更新控制器的 add() 方法中的请求数据,这有效但不是 DRY。我想让 bake 在模型的 table class 中为任何具有 'created_by' 字段的实体添加行为。

有什么想法可以按照 Cake 的意图在行为中做到这一点吗?

一种可能是使用事件系统。我个人通过使用 ComponentBehavior 通过 Model.beforeSave 事件进行通信来做到这一点。基本上,该组件负责添加一个新的侦听器,该侦听器将一个函数传递给允许检索经过身份验证的用户 ID 的行为。

您可以在此处查看 类 两者的代码:UserLinkComponent, UserLinkBehavior

并使用它们:

控制器:

$this->loadComponent('Alaxos.UserLink');

Model\Table:

$this->addBehavior('Alaxos.UserLink');

Blame 行为满足您的需求。您可以使用它或研究它的代码来实现您自己的代码。