Puncte:0

Iterați peste pachete pentru a crea o clasă de pachet de entități pentru fiecare

drapel in

Sunt curios dacă cineva are o modalitate de a produce o clasă de pachete de entități pentru mai multe pachete simultan. De exemplu:

funcția MYMODULE_entity_bundle_info_alter(&$bundle) {

  // Gama mea de diferite tipuri de conținut.
  $target_bundles = ['pagină', 'articol'];

  // Iterează peste tipurile de conținut.
  foreach($target_bundle ca $bundle) {

    $Bundle = ucfirst($bundle); // pagină la pagină
    $bundles['node'][$bundle]['class'] = $Bundle::class; // Pagina::clasa

  }
}

Problema cu care ma confrunt este $Bundle::class piesa nu merge. Este posibil?

Dylan avatar
drapel kr
Cred că ai greșit numele claselor, aș depana returnarea pentru `EntityTypeBundleInfoInterface->getBundleInfo('node);`.și consultați „ContentEntityStorageBase”
user106977 avatar
drapel in
Mulțumesc, Dylan. Mi-am editat exemplul de cod din cauza unor erori. Eroarea pe care o primesc este: **Eroare fatală:** Nu pot folosi ::class cu un nume dinamic de clasă. Acest lucru m-a îndreptat în direcția corectă. Nu am înțeles că `::class` returnează pur și simplu spațiul de nume complet al clasei. Când am adăugat asta în concatenarea mea de șiruri pentru variabila $ Bundle, totul a funcționat. Voi posta codul de lucru în răspuns. Multumesc din nou!
Puncte:1
drapel in

După ce am cercetat ceva, mi-am dat seama de eroarea pe care o primeam:
Eroare fatala: Nu se poate folosi ::class cu un nume dinamic de clasă

Pe scurt, problema mea a fost că nu am înțeles asta ::clasă pur și simplu returnează spațiul de nume complet al clasei în sine. Odată ce am adăugat spațiul de nume complet la mine $Bundle variabil, totul a funcționat frumos. Codul de mai jos oferă o modalitate eficientă de a atribui mai multe pachete de entități la clasele lor respective.

funcția mymodule_entity_bundle_info_alter(&$bundle) {

  // Matrice de nume de mașini de tip conținut.
  $target_bundles = ['pagină', 'articol'];

  // Iterează peste tipurile de conținut.
  foreach($target_bundle ca $bundle) {

    // Întoarceți „pagină” în „Pagină” și adăugați spațiul de nume complet.
    $Bundle = 'Drupal\mymodule\Entity\' . ucfirst($bundle);

    $bundles['node'][$bundle]['class'] = $Bundle;
  }
} 

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.