Er zijn maar weinig websites waar geen formulier op te vinden is. Voor Drupal 7 zijn er verschillende manieren om er eentje te bouwen, of je nu een simpel contactformulier of een complexe enquête bestaande uit meerdere pagina’s nodig hebt. In dit artikel vind je een korte introductie van drie interessante modules voor het maken van allerhande formulieren, waarbij we kennis maken met nieuwkomer entityforms.

Contact module: basic maar niet slecht

Het meest voorkomende formulier is natuurlijk het contact formulier. Een dergelijke functie is wel zo gangbaar dat het inbegrepen is in de standaard Drupal installatie, ga maar eens naar www.jouwsite.nl/contact. Je hoeft alleen maar een menu koppeling in te schakelen (structuur > menu) en bezoekers kunnen naar hartenlust hun vragen stellen.

De standaard contact module bevat echter maar weinig extraatjes (zie structuur > contactformulier). Je kunt meerdere formulieren aanmaken en per formulier één of meerdere verschillende ontvangers instellen, maar je bent gebonden aan de velden naam, onderwerp en bericht. Wie meer wil dan dat komt al snel uit bij de Webform module.

Webform: ervaren rot

Webform gaat al een paar jaartjes mee en is een zeer populaire Drupal module voor het handmatig in elkaar zetten van formulieren. Na installatie verschijnt er een nieuw content type onder de naam Webform. Dit betekent dus dat je voor elk formulier een unieke node gaat aanmaken.

Elke webform node bevat een extra tabblad waarmee je de velden van het formulier en andere instellingen kunt bepalen. Je kunt hierbij o.a. kiezen uit tekstregels, radio buttons, selectielijsten of velden om bestanden te uploaden. Genoeg voor de meeste doeleinden.

Webform biedt verder een aantal handige opties. Zo kun je bijvoorbeeld per formulier bepalen welke rol gebruikers moeten hebben om het desbetreffende in te mogen vullen, hoe vaak dit mag per uur of in totaal mag, en of gebruikers een e-mail ontvangen ter bevestiging.

Doordat Webform automatisch een node aanmaakt wanneer iemand een formulier invult is het mogelijk om een overzicht te zien van de resultaten, en deze te downloaden als (excel) bestand. Het enige nadeel is dat de resultaten niet volledig uitwisselbaar zijn met andere modules zoals Rules en Views. Alleen Webforms zelf kan de ingevulde velden van een formulier uitlezen en weergeven.

Samenvattend is Webform een veilige keuze voor het bouwen van formulieren en biedt ze veel meer opties dan de standaard contact module. Het enige nadeel zou zijn dat de module niet volledig is geintegreerd met andere modules en dat het wat tijd kost om te begrijpen waar je alle opties kunt vinden.

Door haar populariteit zijn tientallen uitbreidingen voor Webform zoals Form Builder, een grafische UI waarmee je formulieren via een drag ’n drop systeem snel in elkaar kunt zetten en Webform Conditional Fields, waarmee je kunt aangeven dat bepaalde velden pas worden weergegeven afhankelijk van de keuze bij een voorafgaand veld.

Entityform: new kid on the block

Entityform is op het moment van schrijven nog maar een paar weken oud. Het doel van de module is om formulieren te kunnen maken met behulp van de standaard Drupal velden. Je bent niet zoals bij Webforms beperkt tot een bepaalde selectie van veld types. Heb je middels een module een video-upload veld toegevoegd aan Drupal dan kun je dit ook gebruiken in een formulier en zo video's naar je toe laten e-mailen door bezoekers.

Entityform voegt na installatie geen nieuw content type toe maar is te vinden onder structuur > Entityform Types. Hier kun je formulieren aanmaken, de velden bepalen en andere opties instellen. Deze opties zijn pakweg hetzelfde als die van Webform, je kunt de e-mail adressen van ontvangers instellen, de URL waar de bezoeker na het invullen naar toe worden verwezen, de rechten die je moet hebben om het formulier in te vullen, et cetera.

Door gebruik te maken van de standaard wijze waarop Drupal 7 velden toevoegd, zijn de resultaten van een formulier ook door andere modules te verwerken. Dit maakt het mogelijk om bijvoorbeeld een View te maken die alleen de resultaten van een specifieke checkbox laat zien. Er is na installatie standaard al een View aangemaakt met een overzicht van resultaten gesorteerd op datum. Deze is te vinden onder structure > Entityform submissions.

Entityform, dat nu nog in alpha fase verkeerd, is een module om in de gaten te houden. Je maakt er formulieren op dezelfde manier zoals je gewend bent om content types in elkaar te klikken. De resultaten zijn (hierdoor) per veld uit te lezen met behulp van andere modules zoals Views en Rules, wat uiteindelijk een stuk meer flexibiliteit geeft. Rules integratie is bijvoorbeeld handig als je wilt dat het invullen van een formulier leidt tot de registratie van degene die het formulier in heeft gevuld, waarbij de rol afhankelijk is van de waarde die is ingevuld bij een specifiek veld.

Conclusie

Waar de Webform module data uit formulieren bewust gescheiden houdt van andere Drupal gegevens, kiest Entityform juist voor volledige integratie. Persoonlijk gaat mijn voorkeur naar die volledige integratie, het vereist iets meer instel werk en ervaring met andere modules, maar daar krijg je wel meer controle voor terug. Webforms heeft op dit moment nog meer opties, met name wat betreft het exporteren van data. Daarbij zijn er veel uitbreidingen voor geschreven die er functies aan toevoegen. Entityform heeft juist minder speciale uitbreidingen nodig en zal daardoor de komende tijd wellicht een snelle groei meemaken. En voor wie het lekker simpel wil houden is er altijd nog de standaard contact module.

Heb je een vraag of opmerking over dit artikel? Laat dan een reactie achter
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Reacties

De conditional fields zit tegenwoordig standaard al in de webform module zelf.

Zeer interessant, ik wil graag een formulier bouwen waarbij iemand de naam van zijn/haar gemeente moet invoeren. Als dit juist gedaan wordt dan wordt een bericht naar de gemeente gestuurd. De vraag die ik heb is hoe ik het kan afdwingen dat de gemeente naam altijd juist is. Bijvoorbeeld in plaats van Leidschendam tik iemand Leidsendam. Ik zie dan 2 opties namelijk autocorrectie van de naam door deze tegen een tabel aan te houden, te corrigeren en onderwater te versturen of de gebruiker de juiste gemeente naam te presenteren met de vraag of deze bedoeld wordt en na akkoord onderwater te versturen.

Hi Kees, je zou de lijst met gemeenten alvast kunnen invoeren en de bezoeker daar een keuze in laten maken. Net zoals je bij een webshop een land kiest. Ik heb het idee dat je dit op maat bouwt en niet met Drupal. Binnen Drupal zijn er tal van manieren waarop dit vrij simpel is op te zetten en het 'tegen een tabel houden' voor je wordt gedaan. Gr, Thomas.

Onderwerp: competitie met wedstrijden.
Ik ben opzoek om leden in een tabel hun scores te laten ingeven.

2 mogelijkheden

De tabel is reeds voorzien van alle rijen die gespeeld kunnen worden en enkel de gegevens dienen nog aangepast te worden door de persoon zelf.

Of de spellers voegen een rij toe met hun score en zij kunnen deze zelf terug aanpassen.

Alvast bedankt.

Michel