对behavior方法的CakePHP Behaviors调用返回错误



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

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

到目前为止所取得的成就我用afterSave事件监听器创建了一个行为;我把它附在我的一个模型里。当我创建并添加一个新任务时,它会运行behaviors方法并发送一封简单的电子邮件。

问题问题是找出哪个模型调用了事件我阅读了cake2.x文档和afterSave事件,用于接收事件和模型,您可以调用别名来知道模型名称:

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

然而,在cakehp3.9中,我们收到事件和实体接口:

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()

最新更新