在 Drupal 7 网络表单中预先选择多个默认(实体)值



我正在尝试编写一个自定义模块来从 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

最新更新