我想创建一个行为,当使用登录用户的id保存记录时,自动填充“created_by”字段,就像时间戳使用“created”一样。然而,很显然,你可以得到$-
我不得不求助于更新控制器的add()方法中的请求数据,然后再进行保存()调用,这可以工作,但不是DRY。我想让Bake为任何具有created_by字段的实体添加模型表类中的行为。
你知道我怎么能按照蛋糕的意图,在行为上做到这一点吗?
一种可能性是使用事件系统。我个人通过使用组件
和通过模型进行通信的
事件。基本上,组件负责添加一个新的监听器,该监听器将函数传递给允许检索经过身份验证的用户id的行为。行为
来实现这一点。在保存之前
您可以在这里查看这两个类的代码:UserLinkComponent、UserLinkBehavior
并使用它们:
控制器:
$this->loadComponent('Alaxos.UserLink');
模型\表格:
$this->addBehavior('Alaxos.UserLink');
责备行为符合你的需要。你可以使用它或者研究它的代码来实现你自己的。