#silverstripe-4
#silverstripe-4
Вопрос:
У меня есть DataExtension
для участника, MyMemberExtension
.
Я пытаюсь обнаружить пользователя, перемещаемого из pending-users
группы в public-users
группу, используя onBeforeWrite и onAfterWrite MyMemberExtension
. Однако изменение группы, похоже, происходит до того, как onBeforeWrite здесь .
В MyMemberExtension
я добавил $IsPending
члена класса.
public function onBeforeWrite()
{
if ($this->owner->inGroup('pending-users'))
{
self::$isPending = true;
}
}
и
public function onAfterWrite()
{
if ($this->owner->inGroup('public-users') and self::$isPending)
{
# Moved from the pending to public - send email
}
}
Я также пытался использовать $this->owner->getChangedFields();
, но Groups не является частью массива.
Как я могу обнаружить пользователя, переходящего с pending-users
на public-users
?
Комментарии:
1. Модуль silverstripe-auditor отслеживает подобные изменения, это может быть полезно: github.com/silverstripe/silverstripe-auditor/blob/2/code /…
2. @RobbieAverill спасибо, я проверю это. Это то, что я описал, ожидаемое поведение?
3. Устанавливаемое вами статическое свойство не будет сбрасываться между участниками, поскольку расширения по умолчанию загружаются как отдельные элементы. Это может способствовать вашей проблеме. Ознакомьтесь с документами для изменения этого здесь: docs.silverstripe.org/en/4/changelogs/4.0.0 /…