2012-04-10 82 views
4

如何使用hook_submit保存複選框的狀態?如何保存Drupal中自定義模塊的複選框值?

hook_form:

$versionArray = array('ver 1.7.0.0-beta1' => 'ver 1.7.0.0-beta1', 'ver 1.6.2.0' => 'ver 1.6.2.0', 'ver 1.5.1.0' => 'ver 1.5.1.0', 'ver 1.4.2.0' => 'ver 1.4.2.0', 'ver 1.3.3.0' => 'ver 1.3.3.0'); 

$form['mage']['version'] = array(
    '#type' => 'checkboxes', 
    '#title' => t('Select'), 
    '#required' => TRUE, 
    '#options' => $versionArray 
); 

hook_submit:

.... 
$node->field_checkboxes[0]['value'] = $form_state['values']['mage']['version']; 
.... 
node_save($node) 

我有我的所有其他領域的節能正確,但這些領域保持空白。

感謝 羅伯特

回答

6

在你提交功能,嘗試使用下面的代碼

$selected = array(); 
foreach($form_state['values']['version'] as $a => $b) 
{ 
    if((string)$b != "0") 
    { 
     $selected[] = $b; 
    } 
} 
variable_set("var_selected", $selected); 

希望這有助於...穆罕默德。

+0

確定將在短期內給一個去,讓你知道我是如何得到的。謝謝 – Robert 2012-04-11 23:27:12

+0

得到它的工作與您的幫助,謝謝。 – Robert 2012-05-28 16:25:34

+0

真的很高興它幫助... - 穆罕默德。 – 2012-05-29 14:15:40

0

更簡單:

$save_array = array_filter($form_state['values']['mage']['version']); 
    $p=0; 
     foreach ($save_array as $a => $b) { 
      $node->field_checkboxes['und'][$p++]['value'] = $b; 
     } 

... 
node_save($node);