Webform tips & tricks: autocomplete field
![Webform tips & tricks: autocomplete field](/sites/default/files/styles/article_featured_image/public/article-featured-images/2378867408_4cc90791d6.jpg?itok=_T_-I_4w)
In questo articolo vedremo come estendere il popolare modulo Webform implementando il widget AJAX autocomplete di un field.
Come sempre succede in Drupal, possiamo ottenere lo stesso risultato percorrendo strade diverse: possiamo scrivere del codice di nostro pugno oppure cercare un modulo che faccia più o meno quello che ci serve.
Partiamo dal metodo custom: sfruttiamo una peculiarità già presente nativamente in Drupal.
Per fare questo andremo a creare un modulo chiamato Autocomplete Field Webform.
Questo modulo si compone di due file: autocomplete_field_webform.info e autocomplete_field_webform.module. Sia autocomplete_field_webform.info e autocomplete_field_webform.module risiedono in una cartella denominata autocomplete_field_webform che metteremo in sites/default/modules/custom per differenziarlo dai moduli dei contributors (come Webform).
Ecco il codice:
autocomplete_field_webform.info autocomplete_field_webform.module 'Node autocomplete', 'page callback' => 'node_autocomplete', 'access callback' => 'user_access', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } /** * Recupero un JSON object * contenente i suggerimenti * per i node title da mostrare. */ function node_autocomplete($string = '') { $matches = array(); $result = db_select('node') ->fields('node', array('title')) ->condition('title', '%'.$string.'%','LIKE') ->range(0, 20) ->execute(); foreach ($result as $node) { $matches[$node->title] = check_plain($node->title); } drupal_json_output($matches); }
L'altra soluzione è prendere in considerazione un modulo contrib che fa una cosa simile: si chiama Webform Autocomplete e aggiunge un nuovo componente da utilizzare nei nostri form, il componente banalmente si chiama Autocomplete.
Vantaggi: non richiede nessuna conoscenza di come si realizza un modulo, possiamo settare che l'autocomplete vada a pescare all'interno di tutti i risultati delle webform precedentemente inviate. Svantaggi: poco flessibile. Tramite il modulo custom possiamo andare ad interrogare qualsiasi tabella del database.