O scufundare profundă în modulul Webform pentru Drupal 8/9
Publicat: 2021-10-12Modulul Webform este cel mai puternic și mai flexibil generator de formulare și manager de trimitere pentru Drupal. Le oferă constructorilor de site-uri puterea de a crea cu ușurință formulare complexe instantaneu. Vine cu un anumit nivel de setări implicite, permițându-vă și să-l personalizați în funcție de cerințele dvs.
Consultați acest blog uimitor - Drupal 8 Webform Module - Un scurt tutorial pentru a vă ajuta să începeți cu modulul Webform de pe site-ul dvs. Drupal 8/9. Acest lucru vă va ajuta să înțelegeți cu ușurință elementele de bază.
Modulul Webform este livrat cu o mulțime de caracteristici interesante și aș dori să menționez câteva aici.

Caracteristici formular web
1. Modificarea formei și a elementelor
Orice formă, element și setările aferente acestuia pot fi modificate folosind cârligele respective. Mai jos sunt câteva cârlige care sunt disponibile pentru utilizare și puteți găsi mai multe în fișierul webform.api.php :
- Formează cârlige
◦ hook_webform_submission_form_alter()
◦ Efectuați modificări înainte ca un formular de trimitere a formularului web să fie redat.
- Cârlige pentru elemente
◦ hook_webform_element_alter()
◦ Modificați elementele formularului web.
- Cârlige opționale
◦ hook_webform_options_alter()
◦ Modificați opțiunile formularului web.
- Cârlige de manipulare
◦ hook_webform_handler_invoke_alter()
◦ Acționați asupra unui handler de formular web atunci când este invocată o metodă.
- mai multe carlige...
◦ hook_webform_access_rules_alter() etc..
◦ Modificați lista de reguli de acces care ar trebui gestionate la nivel de formular web.
2. Sursa YAML
Modulul Webform a început ca un modul de formular YAML, care a permis oamenilor să creeze formulare prin scrierea de markup YAML. La un moment dat, modulul YAML Form a început să aibă interfață de utilizare și a devenit modulul Webform pentru Drupal 8.
- YAML oferă un limbaj de marcare simplu și ușor de învățat pentru construirea și editarea în bloc a elementelor unui formular web.
- Pagina (Vizualizare) Sursă permite dezvoltatorilor să editeze matricea de randare a unui formular web utilizând marcajul YAML. Dezvoltatorii pot folosi pagina (Vizualizare) Sursă pentru a codifica manual formularele web pentru a modifica rapid etichetele unui formular web, pentru a tăia și lipi mai multe elemente, pentru a reordona elementele, precum și pentru a adăuga proprietăți personalizate și marcare la elemente.
- Iată un exemplu de formular de contact și codul sursă YAML corespunzător:

Un formular de contact cu interfață de utilizare drag-n-drop

Codul sursă YAML al formularului de contact
3. Câmpuri condiționate
Webform vă permite să adăugați logică condiționată elementelor dvs. din formular. Să luăm în considerare un mic exemplu, în care trebuie să gestionăm în mod condiționat vizibilitatea elementelor pe baza valorii altui element din formular.
Iată un exemplu de formular cu câmpuri în doi pași, PASUL 1 (element Radio) cu opțiunile „E-mail” și „Număr mobil”. PASUL 2 (Setul de teren) cu două elemente, „E-mail” și „Număr mobil”.

Pagina Form Build

Pagina Vizualizare formular
În exemplul de mai sus, aș dori să afișez câmpul „E-mail” dacă opțiunea „E-mail” este aleasă la Pasul 1, altfel afișați câmpul „Număr mobil” dacă opțiunea „Număr mobil” este aleasă la Pasul 1.
Pentru a realiza acest lucru, editați câmpul „E-mail”, faceți clic pe fila „Condiții”, alegeți „Starea” ca „Vizibil” și setați „Declanșatorul/Valoarea” ca „Valoarea PASUL 1 [Radios] este e-mail”. În mod similar, urmați aceiași pași pentru a adăuga o logică condiționată la câmpul „Număr mobil” și setați „Declanșator/Valoare” ca „Valoarea PASUL 1 [Radios] este numărul_mobilului”. Iată aspectul final al formularului web:

Configurarea logicii condiționale

Formular când se alege „E-mail” la PASUL 1

Formulare când se alege „Număr mobil” la PASUL 1
4. Proprietăți opțiuni personalizate
Webform vă permite să adăugați proprietăți personalizate ale opțiunilor la elementele dvs.
Imaginați-vă un scenariu în care ați dori să gestionați condiționat opțiunile unui element radio pe baza valorii unui element diferit din formular. Cum ai face asta?
Ei bine, nu am găsit nicio modalitate de a o gestiona prin setările logice condiționate din UI. Dar există o prevedere pentru a seta „proprietăți ale opțiunilor personalizate” pentru elementul dvs., în care scrieți logica condiționată necesară care vizează opțiunile dvs. în cadrul elementului folosind codul YAML.
Iată un exemplu, în care putem vedea două elemente radio și pe baza opțiunii pe care o selectez în primul element, vizibilitatea opțiunilor din cadrul celui de-al doilea element ar trebui să se schimbe.

Pagina Form Build

Pagina Vizualizare formular înainte de a adăuga proprietăți de opțiuni personalizate:

- Dacă se alege „Tipul A”, atunci „Opțiunea 1” și „Opțiunea 2” ar trebui să fie vizibile din al doilea element. În mod similar, dacă se alege „Tipul B”, atunci „Opțiunea 3” și „Opțiunea 4” ar trebui să fie vizibile. Pentru a realiza această editare a celui de-al doilea element, mergeți la fila „Avansat”, derulați în jos la secțiunile „Opțiuni (personalizate) proprietăți” și scrieți logica necesară în YAML.


Configurarea proprietăților opțiunilor

Formulare când este ales „Tipul A”.

Formulare când este ales „Tipul B”.
5. Gestionare de e-mail pentru trimiterea formularelor web
Manageri de e-mail
Managerii de e-mail trimite o trimitere a unui formular web prin e-mail. Pentru a adăuga handler de e-mail la formularul dvs. web, accesați fila „Setări” și apoi „E-mail-uri/Manetari”. Apoi, faceți clic pe butonul „Adăugați e-mail / Adăugați handler”.

Adăugați un handler de e-mail
- După cum se arată în imaginea de mai jos, în fila „General”, adăugați „Titlu” și setați detaliile „Trimite către” și „Trimite de la”. Adăugați mesajul „Subiect” și „Corps” după cum este necesar și salvați formularul de configurare.





Și cam atât. Managerul dvs. este concediat ori de câte ori este trimis formularul.
- Puteți, de asemenea, să setați handlere de e-mail condiționate pentru formularul dvs. web, adică să declanșați diferiți handlere de e-mail în funcție de valoarea anumitor elemente din formular.
- De exemplu, să luăm în considerare un element „Selectare” cu valorile „Tip 1” și „Tip 2”. Dacă utilizatorul trimite „Tip 1”, declanșează handlerul „E-mail - Tip 1” care a setat adresa „Către” la „ [email protected] ”. Dacă utilizatorul trimite „Tip 2”, declanșează handlerul „E-mail - Tip 2” care a setat adresa „Către” la „ [email protected] ”.
- Pentru a adăuga o logică condiționată la handler-ul dvs. de e-mail, creați un handler și numiți-l „E-mail - Type 1”. Setați adresa „Către” la „ [email protected] ”, comutați la fila „Condiții”, alegeți „Starea” ca „Vizibil” și setați „Declanșator/Valoare” ca „Selectați tipul [Selectați] valoarea este tip_1”.
- În mod similar, creați al doilea handler și numiți-l „E-mail - Type 2”. Setați adresa „Către” la „ [email protected] ”, comutați la fila „Condiții”, alegeți „State” ca „Vizibil” și setați „Trigger/Value” ca „Selectați tipul [Selectați] valoarea este tip_2”.

Manageri de e-mail programați
- Acesta extinde gestionarea de e-mail al modulului Webform pentru a permite programarea e-mailurilor. Pentru a utiliza această caracteristică, activați submodulul „Manager de e-mail programat pentru formulare web”.
- Pentru a programa trimiterea unui e-mail cu trimiterile de formulare, faceți clic pe butonul „Adăugați handler”. Selectați aici handlerul „E-mail programat”.

Există doar o singură setare de configurare suplimentară în handlerul „E-mail programat” în comparație cu „Managerul e-mail” normal. Și asta înseamnă să adăugați Programează data e-mailului în fila Setări generale.

Manager de e-mail programat
Setați data pentru a vă declanșa handler-ul și atunci când următorul cron este rulat, e-mailul dvs. va fi trimis!
Găsirea ajutorului
Există diferite moduri prin care puteți solicita ajutor cu modulul formular web. Iată o listă cu câteva surse:
- Documentație, carte de bucate și ecranizări
- https://www.drupal.org/docs/8/modules/webform
- Coada de probleme pentru formulare web
- https://www.drupal.org/project/issues/webform
- Răspunsuri Drupal
- http://drupal.stackexchange.com
- Slack canal
- Puteți oricând să postați întrebările dvs. referitoare la modulul Webform pe canalul #webform din spațiul de lucru Drupal slack. Oricine din comunitate, chiar și întreținerii modulelor sunt mereu în preajmă și sunt destul de amabili să vă ghideze cu problemele dvs.
Un strigăt uriaș lui Jacob Rockowitz pentru sprijinul său necruțător față de modulul Drupal 8/9 Webform. Webform nu ar fi fost ceea ce este acum fără el.
