Formularis dinàmics (Part I)

dc., 25/11/2015 - 11:32 - Joan Alsina Morillo
bowling

Un dels objectius principals d’un desenvolupador és que la teva aplicació sigui el més intuïtiva possible. Per sort, en el cas del desenvolupament web, gestors de contingut com Drupal ens ho posen molt fàcil, però a vegades vols anar un pas més endavant. En el nostre cas, vam voler exprimir les possibilitats dels formularis fent que alguns dels camps canviessin dinàmicament. Per exemple, si l'usuari tria, clica o selecciona quelcom volem que el formulari canviï, és a dir s'amaguin o es mostrin camps, s'omplenin amb valors per defecte, es canviïn les opcions d'un desplegable. En aquest article i en el següent explicarem un parell de cassos amb els que ens hem trobat, i com els vam resoldre, relacionats amb els formularis dinàmics.

En aquest primer cas, el nostre objectiu era mostrar un camp de text únicament quan es seleccionava una opció concreta d’un altre camp del tipus select. Tal i com es veu a l'animació de sota, quan l'usuari selecciona 'Altres' es mostra el camp 'Altres tipus de llicència'.

Com sempre fem en aquest casos, primer vam cercar si existien mòduls de tercers que ens resolguessin el problema o, en cas contrari, informació que ens donés alguna pista per a desenvolupar el nostre propi codi. En aquest sentit la comunitat Drupal és molt activa i és freqüent trobar ajuda.

Per aquest cas concret vam trobar el mòdul Field Conditional States que ens permet habilitar/inhabilitar, fer obligatori/opcional i/o fer visible/invisible camps d’un formulari a partir del contingut d’altres camps del mateix formulari.

Un cop instal·lat i habilitat el mòdul, a l’administració de camps, ens apareix una nova opció anomenada Conditional States que ens permet establir els condicionals que activaran els canvis dinàmics que desitgem per a cada camp.

Feu clic a l'imatge per ampliar

Com s’observa en la captura anterior, el nostre camp ‘Altres tipus de llicència’ es fa visible quan el camp ‘Tipus de llicència’ pren el valor ‘Altres’. A aquesta condició li podem afegir d’altres condicions, a més de poder afegir nous canvis dinàmics que afectaran al nostre camp.