Puncte:0

Accesați obiectul FieldItem din Widget

drapel in

Am un FieldItem personalizat cu o metodă care face un calcul pe valorile câmpului:

clasa MyFieldItem extinde FieldItemBase {
  ...
  funcția publică getAmountInEuros() {
    $amount = $this->get('amount')->getValue();
    $currency = $this->get('currency')->getValue();
    $exchange_rate = $this->getExchangeRate($currency);
    returnează $ rate_schimb * $amount;
  }
  ...

Am un widget personalizat pentru acel FieldItem unde trebuie să fac exact același calcul.

clasa MyWidget extinde WidgetBase {
  ...
  funcția publică getAmountInEuros() {
    ...
  }
  ...
}

Desigur, aș prefera să notez această logică doar într-un singur loc, de preferință în definiția FieldItem.

Cum pot accesa FieldItem-ul corespunzător din cadrul widget-ului?

(Codul este doar un exemplu minim care ar trebui să arate problema principală cu un câmp complex și un widget care funcționează altfel.)

Puncte:1
drapel cn

Dacă construiți un singur element de formular, aveți $delta pentru a obține elementul de câmp.

funcția publică formElement(FieldItemListInterface $articole, $delta, matrice $element, matrice &$form, FormStateInterface $form_state) {

  $euro = $articole[$delta]->getAmountInEuros();

În alte metode widget, puteți trece peste $items.

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.