【问题标题】:Access Auth component in Model访问模型中的 Auth 组件
【发布时间】:2015-05-24 21:30:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: cakephp cakephp-3.0


    【解决方案1】:

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

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

    并使用它们:

    控制器:

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

    模型\表格:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但有一点不同:Blame 行为似乎只适用于直接加载到控制器中的模型。因此,它不适用于链接模型。
      • 责备已被弃用,UseMuffin / Footprint 似乎拿起了火炬。那里使用的方法是使用behaviour 创建一个Trait
      猜你喜欢
      • 2020-09-14
      • 2018-11-06
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多