Tôi đang sử dụng Webform 4. Nó sử dụng mã thông báo của Drupal, không phải là% token giống như trước đây trong phiên bản 3 và gần như tất cả những gì tôi tìm thấy là về webform 3.
Nói rằng tôi muốn làm mẫu đăng ký nhiều trang. Trên trang đầu tiên chỉ có một trường email. Trong lần thứ hai, tôi muốn một đánh dấu sẽ nói một cái gì đó như:
Cấu hình đăng ký chi tiết cho molot@example.com
Tương tự, tôi muốn có thể sử dụng chúng làm giá trị mặc định cho các trường trong tương lai, như hỏi người dùng về địa chỉ thanh toán và sau đó cho địa chỉ giao hàng.
Có bất kỳ mã thông báo cho điều đó? Những gì tôi đã làm bây giờ là:
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;
}
}
Nó hoạt động, nhưng nó chỉ hiển thị các giá trị từ một bước trước đó, do đó yêu cầu một số thủ thuật bẩn với các trường ẩn để mang giá trị email qua nhiều bước. Tôi thừa nhận - nó chỉ nhanh và bẩn. Có built-in cách để làm điều đó, hoặc đúng duy trì góp phần cho việc này? Hoặc một cách để làm cho mã này hoạt động độc lập $_POST['submitted']
, để làm cho nó mang các giá trị qua nhiều bước và làm cho mã thông báo (từ các thành phần Webform có sẵn) hiển thị trên danh sách mã thông báo trong cửa sổ chỉnh sửa?