Drupal form alter e validazione campi
Drupal possiede un potente metodo per la personalizzazione di ogni form. Anche del modulo (in questo articolo intendo modulo come una qualsiasi interfaccia che permetta ad un client di inviare dati al server) che permette la modifica dei dati riguardanti i nodi. E una volta compresa la sua logica, riscrivere, modificare e personalizzare un form è un gioco da ragazzi.
Ma cosa succede durante la validazione del modulo?
Perchè quando valido un modulo sembra che la personalizzazione creata per lo stesso con l’hook form alter non funzioni?
Semplice!
Quando un modulo viene validato, questo non passa attraverso la funzione hook form alter, e non viene riscritto, ma semplicemente si prende i valori del form di origine, li controlla, e li ripropone nel secondo modulo. Penso attraverso le variabili in $_POST.
E’ importante ricordarsene soprattutto quando la personalizzazione di un form è piuttosto imponente, perchè poi si diventa matti a chiedersi il motivo per cui la funzione riscritta non venga utilizzata.
Ma in fondo è anche logico. Il modulo originale ha senso che possa venire in qualche modo rimaneggiato, ma nel modulo validato è meglio che riporti il valore dei campi presi dal modulo di origine. Nel mio caso non considerava dei range di possibilità.
Quindi, come nel mio caso, se si hanno delle variazioni entro cui un campo dovrebbe oscillare come valore, si dovrebbe usare nell’hook form alter:
$form[‘#after_build’][] = ‘Nomefunzione_after_build’;
E nella funzione richiamata dall’after_build si dovrebbero considerare tutti i range dei campi.
In questo modo funziona spettacolarmente! Anche con aggiunte di codice Jquery.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!