微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CakePHP Behaviors 调用行为方法返回错误

如何解决CakePHP Behaviors 调用行为方法返回错误

我一直在使用 cakePHP 供个人使用。现在我明白我想创建一些将在我项目的许多模型中重复的函数,所以我通过 CakePHP 文档发现最好的方法是使用 Behaviors。

目标: 每次创建我的项目模型的新实体时,我都想通过电子邮件通知一些用户(同事)。就像添加了新项目,添加了新任务等......

迄今为止取得的成就 我使用 afeterSave 事件侦听器创建了一个行为;我将它附加在我的一个模型中。 当我创建时,我添加一个新任务,它会运行行为方法并发送一封简单的电子邮件

问题 问题是找出女巫模型调用了事件 我阅读了 cake2.x 文档和用于接收事件和模型的 afterSave 事件,您可以调用别名来了解模型名称

public function afterSave(Model $model,...){
     $model_name = $model->alias;
     if ($model_name == 'some_model'){
      //code for specific model
      } else (...)
 }

但是在 cakePHP 3.9 中,我们收到了 Event 和 EntityInterface:

public function afterSave(Event $event,EntityInterface $model)
   {
    
    # I tried $mail_HTMLmessage= $model->_registryAlias;
    # I tried $mail_HTMLmessage= $model->_className;
    # I tried $mail_HTMLmessage= $model->get('className');
    $this->sendMail($mail_HTMLmessage);// this is another method that i defined in my behavior that sends an email to me with the string mail_HTMLmessage as the mail message.

     return true;
   }

我已经测试过 mail_HTMLmessage=$event->getName() 并且在我的电子邮件中我按预期收到了 event.afterSave。 然而,我试图获取模型/类名的所有内容都返回了一个空字符串。

是否可以获取型号名称?最好的方法是什么?

提前致谢

解决方法

我相信你要找的根本不是事件,而是实体。 getSource(),具体来说。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。