Puncte:0

Găsiți valoarea unui alt câmp într-un fieldformatter

drapel in

Acest lucru poate fi complicat de explicat

Am un tip de conținut cu câmpul_1, câmpul_2 etc

field_1 este o referință de taxonomie

field_2 este un câmp personalizat cu diferite sub-valori

Am un formatator personalizat pentru câmpul_2 care face tot felul de lucruri pentru a atașa subvalorile în rezultatul dorit, cu toate acestea, acum am o condiție pentru o anumită valoare a câmpului_1 care necesită o formatare diferită pentru câmpul_2 care nu este dependentă pe câmpul_2 valori.

Am nevoie de formatator pentru a gestiona acest lucru, deoarece câmpul va fi necesar în diferite scenarii de ieșire (modul personalizat, vizualizări, export XML) și nu vreau să fiu nevoit să construiesc mai multe mecanisme pentru manipularea datelor.

Prin urmare, întrebarea mea este cum pot lua field_1 din formaterul field_2, astfel încât să îi pot aplica logica de format condiționat.

Aș putea modifica câmpul_2 pentru a conține un steag pentru a controla această formatare, cu toate acestea, există > 20.000 de înregistrări pentru a adăuga o valoare, în timp ce este 1 câmp suplimentar într-o înregistrare de taxonomie unde există mai puțin de 25 de valori, ar permite, de asemenea, unui editor să seteze indicatorul de formatare independent de taxonomia selectată și, eventual, o valoare afișată incorect. Pot transmite valorile formatatorului din codul modulului personalizat, cu toate acestea, acest lucru trebuie aplicat atunci când un utilizator „normal” își creează propria vizualizare sau altul aduce înapoi câmpul într-o vizualizare sau pagină.

Sper că acest lucru are sens

Puncte:0
drapel ru

Puteți prinde entitatea gazdă în formatatorul de câmp cu $items->getParent()->getEntity(), apoi interogați toate celelalte câmpuri, de exemplu:

clasa MyCustomFormatter extinde FormatterBase {
  funcția publică viewElements(FieldItemListInterface $items, $langcode) {
    $parentEntity = $items->getParent()->getEntity();
    $otherFieldValue = $parentEntity->get('field_foo')->first()->getValue();
    foreach ($items ca $delta => $item) {
      $elements[$delta] = your_custom_formatter_logic_here($otherFieldValue);
    }
    returnează $elemente;
  }
}

Dacă interogați alte entități aici, nu uitați să le îmbinați în $elements[$delta]['#cache']['tags']

Alex Monaghan avatar
drapel in
Genial, este foarte util și am bănuit că trebuie să existe o modalitate foarte simplă.

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.