form_set_error och drupal_goto

Events happening in the community are now at Drupal community events on www.drupal.org.
orjantorang's picture

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

blackdog's picture

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?

orjantorang's picture

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

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: