如何解决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 举报,一经查实,本站将立刻删除。