devel_wizard-2.x-dev/templates/token/devel_wizard.token.hooks.php.twig

templates/token/devel_wizard.token.hooks.php.twig
<?php

declare(strict_types=1);

/**
 * @file
 * Token related hook implementations.
 */

use Drupal\Core\Render\BubbleableMetadata;

/**
 * Implements hook_token_info().
 */
function {{ module }}_token_info() {
  return [
    'types' => [
      '{{ module }}' => [
        'name' => t('{{ module }}'),
        'description' => t('Tokens defined by the custom web application.'),
      ],
    ],
    'tokens' => [
      '{{ module }}' => [
        'foo' => [
          'name' => t('Foo'),
          'description' => t('Foo'),
          'type' => 'string',
        ],
        'sub_object' => [
          'name' => t('Sub object'),
          'description' => t('Sub object.'),
          'type' => 'node',
        ],
      ],
    ],
  ];
}

/**
 * Implements hook_tokens().
 */
function {{ module }}_tokens(
  $type,
  $tokens,
  array $data,
  array $options,
  BubbleableMetadata $bubbleable_metadata,
) {
  if ($type !== '{{ module }}') {
    return [];
  }

  $tokenService = Drupal::token();

  $replacements = [];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'foo':
        $replacements[$original] = 'bar';
        break;

      case 'sub_object':
        $node = \Drupal\node\Entity\Node::load(42);
        if ($node) {
          $replacements[$original] = $node->label();
          $replacements += $tokenService->generate(
            'node',
            $tokenService->findWithPrefix($tokens, 'sub_object'),
            [
              'node' => $node,
            ],
            $options,
            $bubbleable_metadata,
          );
        }
        break;
    }
  }

  return $replacements;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc