在Drupal 7 webform中预选多个默认(实体)值

时间:2018-03-06 18:12:40

标签: drupal-7 drupal-webform

我试图编写一个自定义模块来从VBO传递实体ID - 可能使用会话变量? - 对于特定的网络表单,因此可以在加载时预先检查表单的实体集(即,对于taxo复选框的多个'默认值'值)。这是我第一次尝试更复杂的模块,我已经做了很多搜索,但到目前为止还没有找到关于这个特定问题的任何内容。我想我已经计算出将id带入会话并使用VBO的drupal_goto向视图用户发送表单,但需要帮助将这些ID设置为加载时webform中的默认值

1 个答案:

答案 0 :(得分:0)

在我的情况下,实际上很容易。自定义模块,包含从会话中检索信息的代码(未显示),然后

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