2010-12-26 13 views
0

Ich habe ein Formular, das Textfelder mit Standardwerten angegeben hat. Beim Submit-Ereignis möchte ich, dass diese Standardwerte mit den neuen Werten geändert werden, die ich übergebe. Ich verwende dafür form_set_value ($ element, $ value, $ form_state). Es wird jedoch nicht aktualisiert. Irgendwelche Ideen? Mein Code istWie überschreiben Standardwerte des Formulars beim Senden Ereignis

function sample_myform($form_state){ 

$form['field']['name'] = array(
'#type' => 'textfield', 
'#title'=> 'Name: ', 
'#maxlength'=> 127, 
    '#default_value' => param1, 
); 
    $form['field']['placeholder'] = array(
    '#type'=> 'value', 
    '#value' => array(), 
    ); 
$form['field']['button1'] = array(
'#type' => 'submit', 
'#value' => 'Submit', 
); 
return $form; 
    } 

    function sample_myform_validate($form,&$form_state){ 


$name2 = $form_state['values']['name']; 
    form_set_value($form['field']['placeholder'], $name2, $form_state); */ 
form_set_value($form['field']['name'],'God',$form_state); 
$form_state['rebuild'] = true; 
} 
+0

versuchen, $ form_state als Referenz sample_myform (& $ form_state) übergeben und sehen, was passiert :) – Bladedu

+0

Ich habe die sample_myform (& $ form_state) übergeben. Aber der Standardwert bleibt bestehen :( – user550265

Antwort

0

Eines ist sicher, $ form [ 'Feld'] [ 'Platzhalter'] wird nie, nie ändern, da Sie #value gesetzt. Sobald #value festgelegt ist, wird die Formular-API weiter ausgeführt. Seien Sie jedoch vorsichtig, wenn Sie nur #default_value auf einen #type-Wert setzen, da dies manipuliert werden kann. Sie können etwas wie $ form_state ['placeholder'] = $ name2; in validieren und verwenden Sie das in der Form Builder-Funktion.

Was Sie mit name versuchen, funktioniert in Drupal 7, aber ich vermute, dass Sie in Drupal 6 sind. Die validate-Funktion überschreibt $ form_state ['values'] ganz gut, aber das wird nicht für die Formularwiederherstellung beibehalten. Erneut in $ form_state speichern, wie Sie brauchen.

Verwandte Themen