Dans le code suivant, j'essaie de mettre à jour le formulaire sous-jacent à une nouvelle valeur, mais la valeur ne semble pas mettre à jour correctement.Drupal FAPI: Comment modifier une valeur dans la fonction de validation?
function msul_tgif_xml_basic_search_form_validate($form, &$form_state) {
//$Offset is computed properly as verified by dpm.
$form_state['complete form']['SearchOptions']['Offset']['#value'] = $Offset;
}
function msul_tgif_xml_basic_search_form_submit($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
Quand je retourne à msul_tgif_xml_basic_search_form
, $formstate['values']['Offset']
montre bien la nouvelle valeur calculée, mais quand je recrée la forme avec la nouvelle valeur, il ne met pas à jour correctement. La partie pertinente de la fonction msul_tgif_xml_basic_search_form
est:
$form['SearchOptions']['Offset'] => [
'#type' => 'textfield',
'#title' => t('Start with result:'),
'#required' => FALSE,
'#default_value' =>
isset($form_state['values']['Offset']) ?
$form_state['values']['Offset'] : 1,
'#size' => 6,
'#description' => t('blah'),
'#element_validate' => [
'element_validate_integer_positive'
],
];
Comme je l'ai dit, la forme régénérée contient encore ce que l'utilisateur a tapé dans la dernière et ne met pas à jour selon ce que le code raconter. Toutes les idées de ce que je fais mal ... J'ai passé environ 25 heures à essayer de faire fonctionner cela.
J'ai essayé ce qui précède, j'ai également essayé form_set_value()
.