Webform 中另一个的日期令牌不再起作用:时间戳必须是数字

问题描述 投票:0回答:1

我大家。 我面临一个新问题。 我从 Drupal 9 更新到 Drupal 10。 在我的收据期间,我看到在网络表单中用于从另一个字段获取值的令牌不再起作用,并显示消息:时间戳必须是数字。

更新前使用的令牌是:'[webform:element:my_date_field:value]' 我尝试过:“[webform_submission:values:my_date_field:html_date]”、“[webform_submission:values:my_date_field]”或“[webform_submission:my_date_field:html_date]”没有任何结果。

令牌“[webform_submission:created:html_date]”仍然有效。

有人可以帮我找到好方法吗:)?

date drupal webforms token drupal-webform
1个回答
0
投票

最后,我创建了一个新的令牌来管理这种特殊性。

我在 my_module.tokens.inc 中声明我的令牌

function my_module_token_info() {

          $info['types'] = [
            'my_token_name' => [
              'name' => t('my_token_name'),
              'description' => t(' My Tokens.'),
            ],
          ];
          $info['tokens']['my_token_name']['webform_submission_value'] = [
            'name' => t("Get submission value"),
            'description' => t("Get submission value from a webform element for example [my_token_name:webform_submission_value:key_date_field]"),
            'dynamic' => TRUE,
          ];

}

然后我制作(我以 /* Dynamic tokens.*/ webform.tokens.inc 的一部分为例)

    function my_module_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {

        $replacements = get_default_replacement();
        if ($type == 'my_token_name') {
           $replacements = _get_specific_token_values($tokens,$options, $data, $bubbleable_metadata,  $replacements);
        }
        return $replacements;

    }


function _get_specific_token_values($tokens, array $options, array $data , BubbleableMetadata $bubbleable_metadata, array $replacements) {

  $token_service = \Drupal::token();
  /** @var \Drupal\webform\Plugin\WebformElementManagerInterface $element_manager */
  $element_manager = \Drupal::service('plugin.manager.webform.element');
  if ($value_tokens = $token_service->findWithPrefix($tokens, 'webform_submission_value')) {
    $webform_submission = $data['webform_submission'];
    foreach ($value_tokens as $value_token => $original) {
      $value = _webform_token_get_submission_value($value_token, $options, $webform_submission, $element_manager, $bubbleable_metadata);
      if ($value !== NULL) {
        $replacements[$original] = $value;
      }
    }
  }
  return $replacements;

}

它适用于我的新令牌。 我希望它能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.