Posted by orjantorang on May 12, 2009 at 11:45am
I en egen modul har jag en validering, som inte bygger på klassisk form-validering, utan grundar sig på val som användaren gör och vilka uppgifter som finns om användaren.
Om vissa uppgifter saknas använder jag
form_set_error('field_orgnr[0][value', $message);
...
drupal_goto('node/310000/edit');men fältet markeras inte, dock visas $message i meddelandefältet.
Jag har kikat lite och anropet uppfyller inte villkoret i funktionen drupal_process_form($form_id, &$form, &$form_state) i form.inc där form_get_errors() anropas.
if ((!empty($form['#programmed'])) || (!empty($form['#post']) && (isset($form['#post']['form_id']) && ($form['#post']['form_id'] == $form_id))))Jag är på väg att skriva någon egen funktion som fixar klassen "error" till berörda fält, men jag tänkte kolla först om någon annan har någon lösning på detta?
Comments
Prova att bara skriva
Prova att bara skriva
form_set_error('orgnr', $message);.Sen ska du inte behöva göra en drupal_goto om du använder valideringsfunktionen på rätt sätt.
// Hans Nilsson, Kodamera AB
www.kodamera.se
// Hans Nilsson, Kodamera AB
www.kodamera.se
Hal is?
Tack Hans, men det fungerar inte i mitt fall. Jag är nog ute på hal is som försöker kringgå sedvanlig Drupal procedur. :-)
I mitt scenario så är användaren inloggad och på visningssidan (view) av sin node. När användaren klickar på
en länk kollas först att användaren har tillräckliga uppgifter lagrade för fakturering. Om så inte är fallet vill jag skicka användaren vidare till node/xx/edit
och markera vad som saknas. En normal validering sker ju efter att användaren har fyllt i ett formulär och trycker submit, men det finns inte i detta fall.
Normalt är inte dessa fält ett krav men just för denna tjänst, som användaren klickar sig till, är det det , annars skulle man kunna ha "required" på fälten från början.
Nu har jag löst det på ett annat sätt där användaren måste passera en annan nodetyps formulär med "required"-fält , där jag får köra någon form_alter eller preprocess för att få till klassen "error" och värden, men jag skulle ändå lagra dessa uppgifter separat så det är OK...
Men om någon har gjort något liknade så är jag fortfarande nyfiken..
//Örjan