field_get_items เวอร์ชั่น“ set”?


9

หนึ่งสามารถดึงรายการฟิลด์จากเอนทิตีด้วย

// Find all terms on $node in field 'field_tags'.
$terms = field_get_items('node', $node, 'field_tags');

แต่มีวิธีที่สะดวกในการทำตรงกันข้ามแกนหรืออื่น ๆ ?

// Attach new term $term to $node in field 'field_tags'.
$term = taxonomy_term_load($tid);
$node = field_set_items('node', $node, 'field_tags', 'taxonomy_term', $term);
node_save($node);

ฉันต้องการหลีกเลี่ยงความยุ่งยากในการกำหนด $ term ด้วยตนเองดูใน devel ว่าโครงสร้างอาร์เรย์มีลักษณะอย่างไรแล้วสร้างอาร์เรย์ด้วยมือเพราะบางครั้งมันก็ไม่สำคัญ

ปัญหาเดียวในแกนคิวฉันสามารถหาที่ดูคล้ายรางเป็นเกี่ยวกับAPI DX

คำตอบ:


6

ไม่ไม่มีฟังก์ชั่นดังกล่าว

ดูความคิดเห็นของฉันที่ฝ่ายสนับสนุนด้านภาษา


1
ขอบคุณ Berdir ฉันหวังว่าคุณจะปรากฏตัว;) และฉันก็กลัวว่าคุณจะพูดเช่นนั้น ปัญหาเกี่ยวกับรหัสในความคิดเห็นของคุณคือสำหรับฟิลด์จำนวนมาก 'ค่า' อาจไม่เพียงพอหรือผิดธรรมดา
Letharion

field_get_items () ไม่ได้ช่วยคุณในเรื่องนั้นมันจะส่งกลับอาร์เรย์ของรายการที่มีค่า หรืออะไรก็ตามที่ประเภทฟิลด์กำหนด ไม่มีทางที่จะสรุปได้ว่า
Berdir

ตัวอย่างเช่น field_get_items () ส่งคืนอาร์เรย์ (array ('tid' => 123)) รหัสของคุณจำเป็นต้องรู้ว่า field_tags เป็นการอ้างอิงคำศัพท์อนุกรมวิธานและมันมีชุดคีย์ tid และเป็นรหัสที่เกี่ยวข้องกับคำว่า taxonomy
Berdir

ความคิดเห็นที่ไม่สามารถมองเห็นได้ในหน้านั้นตามลิงค์ที่กำหนด
Junaid

ความคิดเห็นอยู่บนหน้าการสนทนาในขณะนี้: drupal.org/node/1500308/discuss
Berdir

2

สำหรับฟังก์ชั่นที่มีอยู่นั้นfield_set_items()จะต้องสามารถระบุstdClassวัตถุเป็นเทอมของอนุกรมวิธานและแมปกับฟังก์ชันที่สามารถถอดรหัสวัตถุและสร้างอาร์เรย์ของฟิลด์ได้

เนื่องจากไม่มีฟังก์ชั่นหลักในการทำเช่นนั้นฉันไม่คิดว่ามันจะง่าย


มันน่ารำคาญอย่างมากที่ไม่มีคุณสมบัติ $ entity-> entity_type (ยัง)แต่ไม่ว่าจะเพิ่มลงในตัวอย่างการโทรกลับได้อย่างง่ายดาย ฉันอัปเดตคำถามเพื่อสะท้อนถึงสิ่งนี้
Letharion

1
การขาดentity_typeไม่ได้เป็นปัญหาจริงๆ IMHO ... ปัญหาคือสิ่งที่คุณเพิ่มลงในคำถามของคุณ: "บางครั้งมันก็ไม่ใช่เรื่องเล็กน้อย" เนื่องจากข้อมูลนั้นไม่สำคัญสำหรับfield_set_itemsการทำงานตามที่คุณต้องการแต่ละชนิดของฟิลด์ในระบบจะต้องใช้อินเทอร์เฟซบางชนิดที่อธิบายวิธีการย้อนวิศวกรข้อมูลจากวัตถุ / ตัวแปรโดยพลการ
Clive

2

แม้ว่าสิ่งนี้จะไม่ช่วยในการสร้างโครงสร้างอาเรย์ที่ซับซ้อน แต่ฉันเห็นว่าสิ่งที่ฉันกำลังมองหาได้รับการแนะนำใน Drupal 8 บางทีมันอาจจะขยายออกไปอีกในอนาคต :)

API ใหม่พร้อมใช้งานง่ายสำหรับการเข้าถึงเขตข้อมูลคุณสมบัติและข้อมูลภาษา

ตัวอย่างการใช้งานจากหน้าที่เชื่อมโยง:

<?php
// Change a field value.
$body = $comment->get('comment_body');
$body[0]['value'] = 'This is actually a perverted tango';
$comment->set('comment_body', $body);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.