Есть в 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();
}
Добавить комментарий