##  [Drupal 8: Добавляем даные для замены токенов в EmailAction](/blog/drupal-8-dobavlyaem-danye-dlya-zameny-tokenov-v-emailaction) 

/sites/default/files/2019-10/token_01.png

Есть в Drupal 8 такой механизм - действия (actions). Он представляет собой систему плагинов, в каждом из которых описывается логика, которая выполняется при выполнении действия. Также есть настраиваемые действия, которые связываются с конфигурационными сущностями.

В ядре имеется несколько предопределённых типой действий, одним из которых является действие отправки электронной почты - [EmailAction](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Action%21Plugin%21Action%21EmailAction.php/class/EmailAction/8.7.x). С помощью административного интерфейса можно создать своё действие данного типа и задать содержимое письма. Для удобства кастомизации при настройке разрешается использование функционала токенов, однако, как ни странно, "из коробки" заменяются только токены для нод.

Причина такого поведения в следующем коде (для замены токенов используется то, что лежит в свойстве *configuration*):

```php
/**
 * {@inheritdoc}
 */
public function execute($entity = NULL) {
  if (empty($this->configuration['node'])) {
    $this->configuration['node'] = $entity;
  }
  ...
}
```

Если нужны не только ноды, то добавить данные для замены токенов можно следующим образом:

```php
/** @var \Drupal\system\ActionConfigEntityInterface $entity */
$action = $entity->getPlugin();

if ($action instanceof EmailAction) {
  // Хотим использовать токены для пользователя.
  $data = ['user' => $account];
  // Добавляем данные в конфигурацию плагина.
  $config = $action->getConfiguration();
  $action->setConfiguration($config + $data);
  // Выполняем действие.
  $action->execute();
}
```



[Drupal 8](/blog/drupal-8)

[Drupal](/blog/drupal)

 

Ещё по теме

[Роутинг Drupal 8. Прощай hook\_menu.](/blog/routing-drupal-8-proschay-hookmenu)

[Работа с базой данных в Drupal 8](/blog/rabota-s-bazoy-dannykh-v-drupal-8)

[Тема оформления для Drupal 8](/blog/tema-oformleniya-dlya-drupal-8)

[Сущности Drupal 8](/blog/suschnosti-drupal-8)

[Drupal 8: Validation Constraints](/blog/drupal-8-validation-constraints)

 

 

   

 [](https://drupal-coder.ru/rss.xml)