Score:0

เข้าถึงวัตถุ FieldItem จาก Widget

ธง in

ฉันมี FieldItem ที่กำหนดเองพร้อมวิธีการคำนวณค่าของฟิลด์:

คลาส MyFieldItem ขยาย FieldItemBase {
  ...
  ฟังก์ชั่นสาธารณะ getAmountInEuros () {
    $amount = $this->get('amount')->getValue();
    $currency = $this->get('currency')->getValue();
    $exchange_rate = $this->getExchangeRate($currency);
    ส่งคืน $exchange_rate * จำนวน $;
  }
  ...

ฉันมีวิดเจ็ตแบบกำหนดเองสำหรับ FieldItem นั้น ซึ่งฉันต้องทำการคำนวณแบบเดียวกันทุกประการ

class MyWidget ขยาย WidgetBase {
  ...
  ฟังก์ชั่นสาธารณะ getAmountInEuros () {
    ...
  }
  ...
}

แน่นอน ฉันต้องการเขียนตรรกะนี้ไว้ในที่เดียว โดยควรอยู่ในคำจำกัดความของ FieldItem

ฉันจะเข้าถึง FieldItem ที่เกี่ยวข้องจากภายในวิดเจ็ตได้อย่างไร

(โค้ดเป็นเพียงตัวอย่างเล็กๆ น้อยๆ ที่ควรแสดงปัญหาหลักเกี่ยวกับฟิลด์ที่ซับซ้อนและวิดเจ็ตที่ทำงานเป็นอย่างอื่น)

Score:1
ธง cn

หากคุณกำลังสร้างองค์ประกอบแบบฟอร์มเดียว คุณมี $delta เพื่อรับรายการฟิลด์

ฟังก์ชันสาธารณะ formElement (FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {

  $euros = $items[$delta]->getAmountInEuros();

ในวิธีวิดเจ็ตอื่นๆ คุณสามารถวนซ้ำ $items ได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา