2010-01-10 41 views
0

我正在处理一个问题,我在钩住一个字段,设置默认值并隐藏它。问题在于它采用默认值,但只将值的第一个字符提交给数据库。Drupal 6:使用隐藏字段

//Here is how I'm doing it 
$form['field_sr_account'] = array('#type' => 'hidden', '#value' => '45'); 

我想我的结构化数组的方式有问题,但我似乎无法得到它。我发现了一个帖子,http://drupal.org/node/59660,如果有人找到了解决的第一个字符提交

//Here is the format of the solution to the post - but it's not hidden 
$form['field_sr_account'][0]['#default_value']['value'] = '45'; 

我怎么能隐藏属性添加到这一点?

回答

1

答案实际上是分别设置值和隐藏属性,然后使用以下格式再次在提交处理程序中设置值。

我不知道,如果这一切都需要,我想我也许并不需要将其分配形式改变,但它的作品,所以我打算息事宁人...

$form['#field_sr_account'] = $club; 
    $form['field_sr_account'] = array('#type' => 'hidden','#value' => $club); 
    } 
} 

/*in submit handler, restore the value in the proper format*/ 
$form_state['values']['field_sr_account'] = array('0' => array('value' => $form['#field_sr_account'])); 
1

http://drupal.org/node/257431#comment-2057358

CCK隐藏字段

/** 
* Implementation of hook_form_alter(). 
*/ 
function YourModuleName_form_alter(&$form, $form_state, $form_id) { 
    if (isset($form['type']) && isset($form['#node'])) { 
    ### Make a CCK field becoming a hidden type field. 
    // ### Use this check to match node edit form for a particular content type. 
    if ($form_id === 'YourContentTypeName_node_form') { 
     $form['#after_build'] = array('_test_set_cck_field_to_hidden'); 
    } 
    } 
} 

function _test_set_cck_field_to_hidden($form, &$form_state) { 
    $form['field_NameToBeHidden'][0]['value']['#type'] = 'hidden'; 
    $form['field_NameToBeHidden'][0]['#value']['value'] = 'testValue'; 

    return $form; 
}