Modificare un form in Drupal 6: le due possibilità dello sviluppo.

Chi come me sviluppa siti web professionali utilizzando il CMS Drupal si è trovato o si troverà prima o poi con la necessità di dover modificare un form gia' esistente, come ad esempio quello dedicato all'inserimento e modifica delle tassonomie, o categorie. Nella versione 6.x di Drupal, i sistemi sono raddoppiati passando da un generale ad uno specifico per singolo form.

 

 

Partiamo da quello che non è cambiato: il generalista. Sappiamo che per modificare un form all'interno del nostro modulo la funzione da richiamare è nomemodulo_form_alter(), la quale riceve tre parametri di input al posto dei due della versione 5.x:

  • &$form : il form su cui si sta lavorando

  • &$form_state: è un array che contiene i valori di attuali del form appena inviato più altre funzionalità ed è la novità rispetto alla vecchia funzione.

  • $form_id: è il nome del form (in Drupal ogni form ha un suo identificativo univoco).

Tra le nuove funzionalità che troviamo nell'uso di $form_state c'e' una chiave interessantissima: “rebuild”: attraverso il suo uso possiamo dire a Drupal di ricostruire completamente il form. Il caso tipico di utilizzo di questa nuova funzionalità è quello di aggiungere alcuni campi al form se l'utente seleziona una certa checkbox. Facendolo a livello di funzione di validazione tutte le  varie funzioni di  submit definite per il form saranno saltate ed il form sarà ricostruito da zero. Ma questo è un discorso più tecnico: se volete vi posso scrivere un articolo al riguardo (lasciate un commento).

Tornando ai due modi per modificare un form come dicevo c'e' un nuovo secondo modo, che si basa sull'identificativo del form ($form_id) e consiste nel dichiarare una funzione con questo nome: nomemodulo_form_nomeIdentificativoDelForm_alter(), come ad esempio “mymodule_form_myformId_alter()”.

Questa funzione accetta due argomenti che non vi sto a spiegare perché dovreste gia' conoscerli:

  • &$form

  • &$form_state

Il funzionamento di questa seconda funzione è ovviamente uguale a quella precedente quindi è possibile costruire una funzione di submit tramite la dichiarazione di una funzione mymoduleName_form_myformId_submit(), ed una di validazione chiamata mymoduleName_form_myformId_validate().

 

Vi state chiedendo perché questo metodo quando era ed è già presente l'altro ? La risposta è semplice: performance. E forse meglio eseguire una funzione per ogni form che si deve renderizzare (mymodule_form_alter()) oppure è meglio una funzione che viene richiamata solo per un certo form ? Potete lasciare la vostra risposta nei commenti, ma so già quale sarà.

 

Come avete letto modificare un form già in uso non è poi così difficile, anzi le nuove funzionalità rendono possibili strade che prima era di difficile percorrenza. Se state sviluppando siti in Drupal ricordatevi di questo post.

 

Trackback URL for this post:

http://www.ziodrupal.net/trackback/1121

Questo articolo è stato segnalato su ZicZac.it.

Chi come me sviluppa siti web professionali utilizzando il CMS Drupal si è trovato o si troverà prima o poi con la necessità di dover modificare un form gia' esistente. Ecco come.

Modificare un form in Drupal 6: le due possibilità dello svilupp

Chi come me sviluppa siti web professionali utilizzando il CMS Drupal si è trovato o si troverà prima o poi con la necessità di dover modificare un form gia' esistente, come ad esempio quello dedicato all'inserimento e modifica delle tassonomie, o cate...

Post new comment

Google Friend Connect (leave a quick comment)
loading...