CakePHP 行为调用行为方法 returns 错误

CakePHP Behaviors call to behavior method returns error

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

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

到目前为止取得的成就 我用 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 中我们收到事件和 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。 但是,我尝试获取 model/class 名称的所有内容都返回了一个空字符串。

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

提前致谢

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