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

fv2wmkja  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(141)

我一直在为个人使用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,正如预期的那样。然而,我尝试获取模型/类名时,它返回了一个空字符串。
有没有可能获得型号名称?最好的方法是什么?
先谢谢你

guykilcj

guykilcj1#

我相信你要找的东西根本不在事件中,而是实体。

相关问题