Я работаю с 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, как и ожидалось. Однако все, что я пытался получить имя модели/класса, возвращало пустую строку.
Можно ли узнать название модели? и как лучше всего это сделать?
заранее спасибо