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()
,具体来说。
我一直在使用 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()
,具体来说。