Есть в Drupal 8 такой механизм - действия (actions). Он представляет собой систему плагинов, в каждом из которых описывается логика, которая выполняется при выполнении действия. Также есть настраиваемые действия, которые связываются с конфигурационными сущностями.
В ядре имеется несколько предопределённых типой действий, одним из которых является действие отправки электронной почты - EmailAction. С помощью административного интерфейса можно создать своё действие данного типа и задать содержимое письма. Для удобства кастомизации при настройке разрешается использование функционала токенов, однако, как ни странно, "из коробки" заменяются только токены для нод.
Причина такого поведения в следующем коде (для замены токенов используется то, что лежит в свойстве configuration):
/** * {@inheritdoc} */ public function execute($entity = NULL) { if (empty($this->configuration['node'])) { $this->configuration['node'] = $entity; } ... }
Если нужны не только ноды, то добавить данные для замены токенов можно следующим образом:
/** @var \Drupal\system\ActionConfigEntityInterface $entity */ $action = $entity->getPlugin(); if ($action instanceof EmailAction) { // Хотим использовать токены для пользователя. $data = ['user' => $account]; // Добавляем данные в конфигурацию плагина. $config = $action->getConfiguration(); $action->setConfiguration($config + $data); // Выполняем действие. $action->execute(); }
Добавить комментарий