Dezvolt primul meu handler de formulare web și trebuie să accesez persoana care trimite formularul web în postSalvare
metodă.
Știu că pot obține ID-ul de trimitere a formularului web cu $webform_submission->id()
, dar nu îmi pot da seama cum să obțin persoana care trimite. După cum știu, $webform_submission->getWebform()->getOwner()
NU este ceea ce caut, pentru că îmi spune proprietarul formularului, nu „proprietarul” depunerii. am găsit Cum aflu ce câmpuri sunt disponibile? dar nu este atât de detaliat pe cât am nevoie.
Motivul pentru care trebuie să cunosc persoana care trimite este următorul:
Vreau să dezvolt un fel de „portofel” pentru site-ul meu. În acest scop, am instalat modulul „profile” și am creat un tip de profil „portofel” cu un singur câmp: „Balance”. Deci, fiecare utilizator va avea un „sold”.
De asemenea, am creat un formular web numit „Nouă tranzacție” în care utilizatorii vor trimite depuneri și/sau retrageri. Acest formular web are, printre alte câmpuri, un câmp „stare” și un câmp „suma”.
Când un utilizator trimite o „nouă tranzacție”, transmiterea formularului web este stocată cu starea „VERIFICARE” și un handler de e-mail trimite un e-mail administratorului site-ului web (nici un WebformHandler nu este implicat aici).
Administratorul primește e-mailul și revizuiește depunerea/retragerea. Dacă este OK, administratorul actualizează starea trimiterii la „ACCEPTAT”. Este în acel moment (când administratorul actualizează trimiterea) când WebformHandler își face magia. Adaugă/scăde suma din soldul profilului portofel care aparține utilizatorului care a făcut trimiterea. Acesta este motivul pentru care trebuie să cunosc utilizatorul care a creat trimiterea formularului web. Trebuie să fac următoarele pentru a prelua profilul portofel al utilizatorului:
$wallet_profiles = \Drupal::entityTypeManager()->getStorage(„profil”)
->loadByProperties(['uid' => $user->id(),
'type' => 'profil_portofel',
'is_default' => 1,
]);
Dacă știe cineva un mod mai elegant de a realiza acest concept de „portofel”, vă rog să-mi spuneți.