web-dev-qa-db-ja.com

カスタムフォームフィールドにトークンを添付する方法

Drupal 8.にカスタムフォームがあります。8。フォームのフィールドにトークンを添付する必要があります。基本的に、フォームの各フィールドに[トークンの参照]オプションを追加します。

3
Aruna Singh

token.moduleには、たとえば次のようなさまざまな例があります。

// Add the token tree UI.
$form['email']['token_tree'] = array(
  '#theme' => 'token_tree_link',
  '#token_types' => array('user'),
  '#show_restricted' => TRUE,
  '#weight' => 90,
);

これにより、ユーザータイプのトークン(およびグローバルトークン)のリンクが表示されます。

#element_validateコールバックtoken_element_validateと一緒に#token_typesを追加して検証することもできます。

6
Berdir

これは「token.module」からのコピーです。

function token_theme() {
  $info['token_tree_link'] = [
    'variables' => [
    'token_types' => [],
    'global_types' => TRUE,
    'click_insert' => TRUE,
    'show_restricted' => FALSE,
    'show_nested' => FALSE,
    'recursion_limit' => 3,
    'text' => NULL,
    'options' => [],
  ],
  'file' => 'token.pages.inc',
  ];

  return $info;
}

「グローバルトークン」の表示を回避するには、次のものが必要です。

'global_types' => FALSE,

レンダリング要素としてのコード(#(!)を忘れないでください):

// Add the token tree UI.
$form['email']['token_tree'] = array(
 '#theme' => 'token_tree_link',
 '#token_types' => array('user'),
 '#show_restricted' => TRUE,
 '#global_types' => FALSE,
 '#weight' => 90,
);
1
Calar
$form['token_help'] = [
  '#theme' => 'token_tree_link',
  '#token_types' => ['user'],
];

https://www.drupal.org/documentation/modules/token

1