我正在尝试编写一个自定义模块来从 VBO 传递实体 ID - 可能使用会话变量? - 到特定的网络表单,以便在加载时预先检查表单的实体集(即分类复选框的多个"默认"值(。这是我第一次尝试更复杂的模块,我已经做了很多搜索,但到目前为止无法找到有关此特定问题的任何内容。我想我已经解决了将 ID 放入会话并使用 VBO drupal_goto向查看用户发送表单的问题,但在加载时需要帮助将这些 ID 设置为网络表单中的默认值。
就我而言,这实际上很容易。自定义模块,其中包含从会话中检索信息的代码(未显示(,然后
function myModule_form_webform_client_form_[#]_alter( &$form, &$form_state, $form_id ){
$box_options = $form['submitted']['box_ids'];
$boxes = $_SESSION['boxes_from_session'];
$arguments = set_checkboxes_function($boxes);
if(!empty($arguments)){
$box_options['#default_value'] = $arguments;
unset($_SESSION['boxes_from_session']);
}
return $form;
}
function set_datasets_function($boxes){
$default_vals = array();
foreach($boxes as $item ) {
// below code from suggestions here*
// is overkill, this wants a 1D array
//$key = $item->tid;
//$value = $item->name;
//$default_vals[$key] = $value;
array_push($default_vals,$item->tid);
}
//dpm($default_vals);
return $default_vals;
}
*https://www.drupal.org/forum/support/module-development-and-code-questions/2008-02-28/how-to-check-default-value-in-form