我一直在为个人使用cakephp而工作。现在我明白了,我想创建一些将在我的项目的许多模型中重复的函数,所以我通过Cakephp docs发现,最好的方法是使用行为。
**目的:**每次创建项目模型的新实体时,我都希望通过电子邮件通知一些用户(同事)。例如添加了新项目,添加了新任务等。
到目前为止取得了什么成就我创建了一个带有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,正如预期的那样。然而,我尝试获取模型/类名时,它返回了一个空字符串。
有没有可能获得型号名称?最好的方法是什么?
先谢谢你
1条答案
按热度按时间guykilcj1#
我相信你要找的东西根本不在事件中,而是实体。