Score:0

แทนที่ \Drupal\file\Entity\File::load($fid) ใน Drupal 8.9

ธง mx

เป้าหมายของฉันคือการโหลดไฟล์และรับคุณสมบัติ

วิธีการ 'โหลด' ไม่มีอยู่อีกต่อไปใน Drupal 8.9 (ในไฟล์ File.php)

\Drupal\file\Entity\File::load($fid);

อะไรจะทดแทนฟังก์ชั่นนี้ได้?

ฉันใช้ <theme_name>preprocess_views<field_name> hook เพื่อแทนที่ผลลัพธ์ของมุมมอง จากที่นี่ฉันสามารถดึงรหัสไฟล์โดยใช้

$fid = $variables['field']->getValue($variables['row'])[0];

ด้วยรหัสไฟล์ แผนของฉันคือการโหลดไฟล์และดึงคุณสมบัติทั้งหมด เช่น label, uri เป็นต้น

ค้นหาเว็บและคำแนะนำทั้งหมดจะใช้ \Drupal\file\Entity\File::load($fid);

อย่างไรก็ตาม วิธีนี้ไม่มีอยู่แล้วใน Drupal 8.9

ฉันจะไปโหลดไฟล์นี้และรับคุณสมบัติของมันได้อย่างไร??

ขอบคุณ!

4uk4 avatar
cn flag
มันไม่ได้เปลี่ยนไปload() ไม่เคยอยู่ใน File.php แต่เป็นหนึ่งในคลาสพื้นฐาน เอนทิตีทั้งหมดใน Drupal รองรับเมธอด load()
user3891775 avatar
mx flag
ขอบคุณมากสำหรับการตอบกลับของคุณ ขอบคุณ @ไคลฟ์! การใช้ '$storage' ได้ผล! พยายามทำให้เป็นคำตอบที่ถูกต้อง แต่ฉันไม่มีคะแนนเพียงพอที่จะทำเช่นนั้น
Score:3
ธง cn

เอนทิตีทุกประเภทซึ่ง \Drupal\file\Entity\File เป็นหนึ่งมีคง โหลด () กระบวนการ. นี้มาจาก EntityBase::โหลด()และมีอยู่ในทุกเวอร์ชันของ Drupal 8 และ 9

คุณสามารถใช้วิธีนั้นต่อไปได้ แต่จะไม่ไปไหน แต่อีกวิธีหนึ่งคือ คุณสามารถใช้บริการผู้จัดการประเภทเอนทิตี

$storage = \Drupal::entityTypeManager()->getStorage('ไฟล์');
$file = $storage->load($fid);

โปรดทราบว่าควรแทรกบริการหากรหัสของคุณอยู่ในบริบทที่อนุญาต

โพสต์คำตอบ

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