Puncte:0

Cum știu ce proprietăți și metode sunt disponibile pentru un obiect entity_metadata_wrapper?

drapel us

Poate fi mai ușor să începeți cu un exemplu.

Funcția entity_metadata_wrapper() pare să facă multă magie complexă în spatele scenei pentru a returna un obiect cu toate datele legate de entitatea în cauză. Dar de unde știu ce proprietăți și metode sunt disponibile pentru mine odată ce obiectul este returnat?

Să presupunem că am Comerț de Comerț. (Aceasta nu este neapărat o întrebare de comerț, este doar bună ca exemplu). La finalizare, vreau să verific dacă comanda conține un articol rând de un anumit tip de produs și să notific utilizatorul.Poate vreau să compar și prețul calculat al articolului rând cu prețul inițial din tipul de produs.

Ok, așa e Ordin, Elemente rând, Tip produs, și Utilizator care sunt toate entități la care se face referire. Tipul de produs are mai multe câmpuri personalizate, poate că acestea sunt referințe la o altă entitate, cum ar fi informațiile de facturare.

$comandă_înveliș = entity_metadata_wrapper('comandă_comerț', $comanda);

Conform documentelor Entity API, toate acele entități la care se face referire sunt acum incluse în obiect, gata pentru mine să le folosesc datorită wrapper-ului.

Dar de unde știu cum să accesez o valoare pe care o caut sau unde se află în structura obiectului? Toate câmpurile drupal la care se face referire sunt numele mașinii lor după design? Știu că înlănțuirea trebuie să joace un rol, deci cum intervine asta? Și nu s-ar schimba această structură de fiecare dată când entity_metadata_wrapper este apelată, având în vedere că entitatea în cauză ar putea referi în mod arbitrar la alte entități (care fac referire la alte entități etc.)? Și dacă structura este arbitrară, orice cod care s-a bazat pe acea structură la un moment dat, dacă se schimbă, nu va rupe codul?

În cele din urmă, văd referiri la lucruri de genul ->salvare() și ->valoare() în documentele Entity API, dar nu pot găsi o referință la setul complet de metode disponibile pentru mine. Există vreo structură logică pentru a descoperi acest lucru sau trebuie să folosesc ceva de genul xdebug de fiecare dată (și dacă o fac, asta tot nu mă anunță ce metode sunt disponibile pentru a acționa asupra datelor). Acesta este pentru D7, dar dacă un răspuns D8+ ar putea adăuga claritate, vă rugăm să furnizați.

misterdidi avatar
drapel de
Acesta este ceea ce cauți? [https://www.drupal.org/docs/7/api/entity-api/entity-metadata-wrappers#debugging](https://www.drupal.org/docs/7/api/entity-api/ entity-metadata-wrappers#debugging)
drapel cn
Răspuns scurt: Folosiți un IDE și acordați-vă timp pentru a-l configura corect. De exemplu, folosesc PHPStorm: https://drupalize.me/topic/phpstorm
drapel cn
IDE-urile nu ajută cu adevărat aici, toate sunt metode magice, așa că proprietățile/metodele nu sunt cunoscute până la execuție. Consultați https://drupal.stackexchange.com/questions/33473/is-there-a-good-way-to-inspect-objects-whose-type-is-derived-from-the-entitydrup pentru câteva idei

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.