logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Kako koristiti Webform REST modul sa Drupal 11: Praktičan vodič

21/05/2025, by Ivan

U dinamičnom okruženju web razvoja, Drupal 11 se izdvaja kao jedna od najrobustnijih i najfleksibilnijih platformi za izgradnju dinamičkih sajtova i aplikacija. Njegova modularna arhitektura omogućava developerima da prilagode i prošire osnovne funkcionalnosti za širok spektar projektnih potreba.

Jedno od tih proširenja je Webform REST modul, moćan alat koji omogućava jednostavnu integraciju između Drupala i eksternih aplikacija putem RESTful API-ja. Ovaj vodič pruža praktičan uvod u korišćenje Webform REST modula sa Drupal 11, objašnjava postavljanje i konfiguraciju i pokazuje kako efikasno komunicirati sa modulom.


Šta ćete naučiti

Ovaj članak pokriva sledeće teme:

  • Pregled Webform REST modula

  • Potrebni moduli i zavisnosti

  • Instalacija Webform REST i REST UI

  • Konfiguracija Webform REST modula

  • Podešavanje CORS-a

  • Slanje API zahteva

  • Razumevanje request i response payload-a


Pregled modula: Webform REST

Webform REST modul proširuje Webform mogućnosti Drupala tako što izlaže funkcionalnosti vezane za forme putem RESTful endpointova. Omogućava operacije kao što su kreiranje, pregled, ažuriranje i brisanje web formi, kao i slanje i preuzimanje podataka iz formi kroz HTTP zahteve.

Ovaj modul je posebno koristan za integraciju Drupala sa eksternim platformama kao što su:

  • CRM sistemi

  • Alati za email marketing

  • Mobilne aplikacije

  • Servisi trećih strana

Omogućavanjem ovakvih integracija, možete pojednostaviti procese i centralizovati prikupljanje podataka, značajno unapređujući ukupnu efikasnost vaše aplikacije.


Prethodni zahtevi

Da biste započeli rad sa Webform REST, potrebno je da imate sledeće module instalirane:

  • Webform – za kreiranje i upravljanje web formama

  • REST UI – za konfiguraciju RESTful endpointova i dozvola

  • Webform REST – glavni modul koji omogućava API funkcionalnost


Instalacija Webform REST i zavisnosti

U ovom vodiču koristimo Docker i Lando za upravljanje lokalnim razvojnim okruženjem, a Composer za upravljanje zavisnostima.

Za instalaciju Webform REST modula, pokrenite sledeću komandu:

$ lando composer require 'drupal/webform_rest:^4.0'

Za uključivanje modula:

$ lando drush en webform_rest

Dodatno, omogućite i REST UI modul koji vam omogućava konfiguraciju REST endpointova iz admin interfejsa:

$ lando drush en restui

Alternativno, ove module možete aktivirati i putem admin interfejsa:
/admin/modules


Konfigurisanje Webform REST modula

Kada su potrebni moduli uključeni, idite na stranicu za REST konfiguraciju:

Putanja: /admin/config/services/rest

Omogućite sledeće REST resurse:

  • Webform Submission

  • Webform Elements

  • Webform Submit

Ovi resursi omogućavaju osnovne endpointove za rad sa formama i njihovim podacima putem REST-a.

Update article resources

Neophodno je izabrati bar jedan metod autentifikacije, u našem primeru "cookie".

Send post settings

Da biste omogućili neautentifikovanim korisnicima da šalju zahteve putem web forme, morate dodeliti odgovarajuće dozvole ulozi Anonymous korisnika. Konkretno, omogućite im POST zahteve na Webform Submit REST resursu.

Ovu dozvolu možete podesiti odlaskom na:
/admin/people/permissions

U sekciji “RESTful Web Services” čekirajte polje za “Access POST on Webform Submit resource” za Anonymous user. Ovo osigurava da eksterni korisnici ili sistemi bez autentifikacije mogu uspešno slati podatke na vaš Drupal sajt putem Webform REST API-ja.

Permissions page

Nekoliko reči o CORS-u

Ako planirate da šaljete zahteve sa domena različitog od onog na kom je vaša aplikacija instalirana, verovatno ćete naići na CORS problem kao na slici:

CORS error

Razumevanje i podešavanje CORS-a u Drupalu 11

CORS (Cross-Origin Resource Sharing) je ključni sigurnosni mehanizam implementiran od strane web pregledača radi kontrole pristupa resursima sa različitih izvora—gde je izvor definisan kao kombinacija domena, protokola i porta.

Jednostavno rečeno, CORS omogućava serverima da preciziraju kojim spoljnim domenima je dozvoljen pristup određenim resursima putem browser zahteva. Bez ispravno podešene CORS politike, browser se vraća na Same-Origin Policy, koji blokira pristup svim resursima osim onima sa istog izvora.


Podešavanje CORS-a u Drupalu 11

Drupal 11 upravlja CORS podešavanjima kroz fajl services.yml, tačnije kroz sekciju cors.config. Po default-u, ova konfiguracija je isključena, što znači da su cross-origin zahtevi blokirani dok ih eksplicitno ne dozvolite.

Da biste omogućili CORS za eksterne klijente—poput JavaScript frontend-ova ili mobilnih aplikacija—potrebno je da izmenite konfiguraciju u svom services.yml fajlu. Evo primera permisivnog podešavanja za razvoj ili test okruženje:

cors.config:
    enabled: true
    allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with', 'access-control-allow-origin','x-allowed-header','*']
    allowedMethods: ['*']
    allowedOrigins: ['*']
    exposedHeaders: false
    maxAge: false
    supportsCredentials: true

Podešavanje services.local.yml u lokalnom razvoju

U većini lokalnih Drupal okruženja koristi se fajl services.local.yml. Ovaj fajl je namenjen da prepisuje podešavanja iz glavnog services.yml. Dakle, sve promene koje napravite u services.yml mogu biti ignorisane ako postoje konfliktna ili nepotpuna podešavanja u services.local.yml.

Da biste osigurali da CORS konfiguracija bude primenjena, proverite da su podešavanja ispravno uneta i u services.local.yml.

Obavezno očistite keš nakon izmene podešavanja

Nakon izmene YAML konfiguracionih fajlova, očistite Drupal keš kako bi izmene stupile na snagu:

$ lando drush cr

Indentacija u YAML-u je bitna

Obratite pažnju na indentaciju u YAML fajlovima, jer je to čest izvor problema. Čak i jedan pogrešan razmak ili tab može uzrokovati da se podešavanja ignorišu—što može dovesti do sati nepotrebnog debugovanja. Ako izmene ne stupaju na snagu, najpre proverite indentaciju.


Korišćenje Webform REST modula

Kada je sve podešeno, možete početi sa slanjem formi putem REST-a. Proces podrazumeva slanje POST zahteva na Webform REST endpoint, zajedno sa potrebnim header-ima i podacima.

Endpoint

POST /webform_rest/submit

Obavezan header

Content-Type: application/json

Primer: Slanje forme koristeći Axios

Evo primera Axios zahteva u JavaScriptu za slanje podataka iz forme:

 const response = await axios.post('http://yoursite.lndo.site/webform_rest/submit', {
    "webform_id": "some_rest_form",
    "name": "Ivan Abramenko",
    "email": "levmyshkin89@gmail.com",
  }, {
    headers: {
    "Content-Type": 'application/json',
    },
  });

Ovaj primer prikazuje kako da pošaljete POST zahtev pomoću Axios biblioteke, ali možete koristiti i druge HTTP biblioteke ili okvire.

Payload zahteva uglavnom sadrži webform_id, što je mašinsko ime ciljne forme, i njena registrovana polja.

{
   "webform_id": "some_rest_form",
   "name": "Ivan Abramenko",
   "email": "levmyshkin89@gmail.com"
}

Odziv na uspešno slanje sadrži sledeća polja:

  • sid – jedinstveni identifikator zapisa
  • confirmation_url – URL za potvrdu slanja
  • confirmation_message – poruka potvrde
  • confirmation_title – naslov poruke potvrde
{
   "sid": "ae8c3bd4-91a2-5c17-a264-59c86157457b",
   "confirmation_type": "inline",
   "confirmation_url": "",
   "confirmation_message": "Just a confirmation message",
   "confirmation_title": "A confirmation title"
}

Pored toga, možete dobiti i validacione poruke koje generiše sam Webform. Na primer, ako nije poslato obavezno polje, dobijate sledeći odgovor:

{
   "message": "Submitted Data contains validation errors.",
   "error": {
       "email": "Polje email je obavezno."
   }
}

Rukovanje API odgovorom

Na osnovu podataka iz API odgovora, možete programski obezbediti povratne informacije korisnicima—poput poruka o uspehu, validacionih grešaka ili neuspešnih pokušaja slanja. Pravilno prilagođavanje ovih odgovora poboljšava korisničko iskustvo i pruža jasnoću tokom interakcije.

Bilo da integrišete formu sa frontend okvirom ili mobilnom aplikacijom, efikasno rukovanje API odgovorima je ključno za nesmetano i intuitivno korisničko iskustvo.


Završna reč

Webform REST modul za Drupal 11 nudi moćno i fleksibilno rešenje za rad sa web formama putem RESTful API-ja. Omogućavanjem eksternim aplikacijama da šalju i manipulišu podacima iz formi, značajno proširuje integracione mogućnosti Drupala—čime postaje idealan za moderne web arhitekture koje se oslanjaju na decoupled ili headless pristup.

U ovom članku smo obradili:

  • Uvod u Webform REST modul

  • Korak-po-korak instalaciju i konfiguraciju

  • Kako slati podatke kroz API na praktičnom primeru

Iako je ovaj vodič bio fokusiran na slanje formi, Webform REST modul podržava i dodatne operacije koje ovde nisu pokrivene, uključujući:

  • PATCH zahteve za ažuriranje postojećih zapisa

  • GET zahteve za preuzimanje podataka ili listu polja forme

  • Dodatna podešavanja za autentifikaciju i kontrolu pristupa

Ove napredne primene biće obrađene u narednim tutorijalima.