Изменить после обновления вопроса (и обнаружение корневой проблемы в отдельном связанном вопросе):
Поскольку вы пытаетесь манипулировать полями CCK, и у них довольно специфические механизмы обработки по сравнению со «стандартными» элементами формы Drupal FAPI, вам, вероятно, следует ознакомиться с обработкой форм CCK в целом, а также hook_form_alter () и CCK в частности, поля и CCK . Взглянув на эту документацию (и другие статьи CCK, связанные на левой боковой панели), кажется, что должно быть прямое решение вашей проблемы, но может потребоваться некоторое копание.
В качестве потенциального «быстрого исправления» вы можете попытаться сохранить свой текущий подход и скорректировать представленное значение при проверке, примерно так:
function addSR_form_service_request_node_form_alter(&$form, $form_state) {
$form['field_sr_account'] = array(
'#weight' => '-50',
'#type' => 'select',
'#title' => 'Select which account',
'#options' => addSR_getMultiple()
);
// Add custom validation handler
$form['#validate'][] = 'addSR_validate_function';
}
function addSR_validate_function (&$form, &$form_state) {
// Assemble result array as expected by CCK submit handler
$result = array();
$result[0] = array();
$result[0]['value'] = $form_state['values']['field_sr_account'];
// Set this value in the form results
form_set_value($form['field_sr_account'], $result, $form_state);
}
ПРИМЕЧАНИЕ. Это непроверенный код, и я не знаю, сработает ли он, учитывая, что CCK также сделает некоторые вещи на этапе проверки. Безусловно, ясным способом было бы сначала понять рабочий процесс обработки формы CCK, а затем соответствующим образом манипулировать им.