私はWebform 4を使用しています。バージョン3で使用したような独自の%トークンではなく、Drupalのトークンを使用しています。
複数ページのサブスクリプションフォームを作成するとします。最初のページには、メールフィールドのみがあります。2つ目は、次のようなマークアップが必要です。
molot@example.comの詳細なサブスクリプション構成
同様に、請求先住所や配達先住所をユーザーに尋ねるなど、将来のフィールドのデフォルト値として使用できるようにしたいと考えています。
そのためのトークンはありますか?私が今したことは:
function mymodule_token_info() {
$type = array(
'name' => t('Webform submitted values'),
'description' => t('Tokens related to $_POST[\'submitted\'].'),
);
$tokens = array();
if(isset($_POST['submitted'])) {
foreach($_POST['submitted'] as $key => $val) { //discard $val now
$tokens[$key] = array(
'name' => $key,
'description' => "\$_POST['submitted']['$key']",
);
}
}
return array(
'types' => array('webform_submitted' => $type),
'tokens' => array('webform_submitted' => $tokens),
);
}
function mymodule_tokens($type, $tokens, $data, $options) {
if($type == 'webform_submitted') {
$replacements = array();
foreach ($tokens as $name => $original) {
//Hide errors below. We don't care if it really exists yet. If empty, so be it.
@$replacements[$original] = (string)$_POST['submitted'][$name];
}
return $replacements;
}
}
動作しますが、1ステップ前の値のみを表示するため、複数のステップにわたって電子メールの値を伝えるには、非表示フィールドを使用したいくつかの汚いトリックが必要です。私は認める-それはただ速くて汚かった。あらゆるありますビルトインそれを行う方法は、または適切に貢献して維持このためのモジュールを?または、このコードをから独立して機能させ$_POST['submitted']
、多くのステップで値を伝え、(利用可能なWebform要素からの)トークンを編集ウィンドウのトークンリストに表示する方法はありますか?