nortmas
3/28/2018 - 12:08 PM

Token

<?php

/**
 * Implement hook_token_info()
 */
function hook_token_info() {
  $types['module_name'] = [
    'name' => t('Module name token type.', [], ['context' => 'acc']),
    'description' => t('Defined acc custom token type', [], ['context' => 'acc']),
  ];
  $tokens['message'] = [
    'name' => t('User entered message', [], ['context' => 'acc']),
    'description' => t('Defined acc custom token name', [], ['context' => 'acc']),
  ];
  return [
    'types' => $types,
    'tokens' => [
      'profile' => $tokens,
    ],
  ];
}

/**
 * Implement hook_token()
 */
function hook_token($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];

  if ($type == 'module_name') {
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'message':
          $replacements[$original] = $data['message'];
          break;
      }
    }
  }

  return $replacements;
}
<?php
$text = "text - [module_name:message]";
$data['message'] = 'token will be replaced with this text';
\Drupal::token()->replace($text, $data);