在Model中访问Auth组件

时间:2015-05-22 01:22:47

标签: cakephp cakephp-3.0

我想创建一个行为来自动填充“created_by”#39;使用已登录用户的ID保存记录时的字段,就像时间戳创建'一样。但是,显然你可以在模型中的之外的任何地方获得$ this-> Auth->用户(' id')。

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

我是如何在行为中做到这一点的,就像Cake想要的那样?

2 个答案:

答案 0 :(得分:1)

可能是使用事件系统。我个人通过使用通过Component事件进行通信的BehaviorModel.beforeSave来完成此操作。基本上,组件负责添加一个新的侦听器,该侦听器将函数传递给允许检索经过身份验证的用户ID的行为。

您可以在此处查看这两个类的代码:UserLinkComponentUserLinkBehavior

并使用它们:

控制器:

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

模型\表:

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

答案 1 :(得分:0)

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