Puncte:0

Cum obțin persoana care trimite un formular web?

drapel in

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.

Puncte:1
drapel in

OK. I think I can answer myself: $webform_submission->getOwnerId() is what I need.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.