Puncte:0

Cum se oferă o serie de valori de la un furnizor de context

drapel in

Sunt în căutarea construirii unui furnizor de context personalizat, în special pentru a oferi „grupuri ale utilizatorului actual”. Construiesc acest lucru pentru un alt plugin, un plugin Condition, al cărui scop este să filtreze lucruri (de exemplu, Blocuri) pe baza rolurilor de grup ale utilizatorului curent.

Sunt conștient că există următoarele probleme și corecții, ceea ce mă duce undeva:

Cu toate acestea, ambele patch-uri se ocupă doar de un singur grup, adică furnizorul de context alege doar primul grup din care aparține un utilizator, iar pluginul de condiție este furnizat un grup pentru evaluare. Ceea ce aș dori să fac este ca furnizorul de context să furnizeze mai multe grupuri (toate grupurile din care face parte utilizatorul) și ca pluginul de condiție să accepte mai multe grupuri.

Dar cum pot furniza și consum o serie de valori ca valoare de context?

Cele mai multe exemple pentru furnizorul de context și pluginurile care consumă valori de context funcționează numai pe valori individuale. Nu am văzut exemple despre cum să ofere o matrice (de grupuri în acest caz).

Puncte:3
drapel fr

Să începem cu asta:

Cele mai multe exemple pentru furnizorul de context și pluginuri care consumă context valorile operează numai pe valori individuale.

Deși este adevărat, recunoașteți că „valoarea unică” furnizată este un obiect, nu un tip primitiv. În cazul furnizorului de context de grup, acea „valoare unică” este un obiect Entitate de tip „grup”. Entitatea în sine conține toate datele obișnuite - id, etichetă, descriere, data creării, autor, câmpuri de bază etc. Așa că este greșit să ne gândim la el ca un singur număr.

Pentru a furniza o serie de valori, trebuie să returnați un obiect care reprezintă o structură de date în loc de o Entitate. API-ul de bază Typed Data definește o varietate de tipuri de date, dintre care tipul Hartă este probabil cel mai bun pentru scopul dvs.Map deține o colecție de valori, similară cu o matrice asociativă familiară în PHP.

Deci, schița soluției este să vă creați propriul furnizor de context prin copierea furnizorului de context al grupului existent, să vă modificați copia astfel încât, în loc să creați o definiție a contextului entității, să creați o definiție a contextului hărții, apoi să adăugați valorile pe care doriți să le furnizați. Hartă.

Dacă aveți nevoie de mai multe funcționalități, vă puteți crea propriul tip de date (recomand să subclasați Map pentru aceasta) și să furnizați un obiect din acel tip de date în loc de o Entitate sau o Hartă.

Puteți găsi un exemplu scurt despre cum să vă scrieți propriul furnizor de context aici: https://www.drupal.org/docs/contributed-modules/rules-essentials/for-developers/providing-global-context-variables

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.