2015-11-24 4 views
0

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().

Répondre

0

Je ne pense pas que ce soit la bonne réponse, cela ressemble à un kludge mais cela fonctionne, j'ai changé la valeur de $form_state['input']['Offset'] et cela a fonctionné. Espérons que cela aide quelqu'un d'autre aussi.