我想创建一个行为来自动填充“created_by”#39;使用已登录用户的ID保存记录时的字段,就像时间戳创建'一样。但是,显然你可以在模型中的除之外的任何地方获得$ this-> Auth->用户(' id')。
我不得不求助于在save()调用之前更新控制器的add()方法中的请求数据,这有效但它不是DRY。我想要在模型的表类中添加bake,以便为任何具有&created; created_by'的实体添加行为。字段。
我是如何在行为中做到这一点的,就像Cake想要的那样?
答案 0 :(得分:1)
可能是使用事件系统。我个人通过使用通过Component
事件进行通信的Behavior
和Model.beforeSave
来完成此操作。基本上,组件负责添加一个新的侦听器,该侦听器将函数传递给允许检索经过身份验证的用户ID的行为。
您可以在此处查看这两个类的代码:UserLinkComponent,UserLinkBehavior
并使用它们:
控制器:
$this->loadComponent('Alaxos.UserLink');
模型\表:
$this->addBehavior('Alaxos.UserLink');
答案 1 :(得分:0)
Blame行为可以满足您的需求。您可以使用它或研究它的代码来实现自己的代码。