Score:0

แนบรูปภาพเข้ากับฟิลด์โดยทางโปรแกรม

ธง as

ฉันใช้ Drupal 9.3.13 บน localhost ฉันสร้าง QR Code ได้สำเร็จตามรูปแบบ .SVG และเก็บภาพนั้นไว้ที่ public:// ฉันสร้างฟิลด์ประเภทต่างๆ ซึ่งหนึ่งในนั้นคือ field_file_svg ประเภทฟิลด์

เป้าหมายคือการแนบรูปภาพที่มีอยู่ที่อัปโหลดไปยังไดเร็กทอรี public:// และแนบไปกับ field_file_svg ฉันใช้ hook_entity_presave() สำหรับสิ่งนี้. QR Code ถูกสร้างขึ้นและจัดเก็บเรียบร้อยแล้ว แต่โหนดไม่แสดงอะไรเลย

ใน /admin/reports/dblog/ มันพ่นข้อผิดพลาดต่อไปนี้

คำเตือน: การสร้างวัตถุเริ่มต้นจากค่าว่างใน urlist_entity_presave() (บรรทัดที่ 83 ของ C:\MAMP\htdocs\drupal9\modules\custom\urlist\urlist.module)

นี่คือรหัสที่ฉันใช้

$qrcode = (QRCode ใหม่($options))->render("$output");
$file_data = file_get_contents($qrcode);
$file = file_save_data($file_data, 'สาธารณะ://t10.svg', FileSystemInterface::EXISTS_REPLACE);

ถ้า (!empty($file)) { 
  $file_arr = อาร์เรย์(
    "target_id" => $file->id(),
    "alt" => "Alt1",
    "ชื่อเรื่อง" => "ชื่อเรื่อง 1"
  );       
   
  $node->field_file_svg = $file_arr;
}
4uk4 avatar
cn flag
นี่ไม่ใช่ปัญหาของ Drupal ดูhttps://stackoverflow.com/questions/8900701/creating-default-object-from-empty-value-in-php
mariosdaskalas avatar
as flag
ขอบคุณที่ชี้ให้เห็น อย่างไรก็ตามฉันไม่เข้าใจ ฉันใช้เวอร์ชัน PHP: 7.4.1 ข้อผิดพลาดอยู่ที่ $node->field_file_svg = $file_arr; ฉันไม่เข้าใจว่าฉันควรทำอย่างไร
mariosdaskalas avatar
as flag
@4uk4 อาปาเช่ เวอร์ชันไคลเอนต์ฐานข้อมูล: libmysql - mysqlnd 7.4.1 นามสกุล PHP: mysqliDocumentation curlDocumentation mbstringDocumentation เวอร์ชัน PHP: 7.4.1
4uk4 avatar
cn flag
คำเตือน PHP นี้หมายความว่าคุณกำลังพยายามตั้งค่าฟิลด์บนตัวแปรว่าง `$node`
mariosdaskalas avatar
as flag
@4uk4 แต่มันว่างเปล่าได้อย่างไร? ฉันกำหนดให้ $node->field_file_svg = $file_arr; ฉันสับสน.
mariosdaskalas avatar
as flag
@4uk4 ฉันใช้ devel และฉันเห็นโครงสร้างของฟิลด์
4uk4 avatar
cn flag
ในค่าเริ่มต้น \stdClass วัตถุ?
mariosdaskalas avatar
as flag
@4uk4 ฉันใช้ $node = new \stdClass(); $node->success = เท็จ; $node->field_file_svg = $file_arr; โดยไม่มีข้อผิดพลาดใน dblog ยังคงสร้างภาพได้สำเร็จ แต่ไม่ติดในฟิลด์
4uk4 avatar
cn flag
ฉันใช้สิ่งนี้เป็นการยืนยัน devel แสดงวัตถุ stdClass นี่ไม่ใช่โหนด คุณต้องกำหนดโหนดให้กับ $node ก่อนจึงจะตั้งค่าฟิลด์ให้กับโหนดได้
mariosdaskalas avatar
as flag
@4uk4 ฉันขอโทษจริงๆ แต่ฉันยังใหม่กับ Drupal ฉันจะทำอย่างนั้นได้อย่างไร ด้วย $node = Node::load(1);
mariosdaskalas avatar
as flag
@4uk4 ฉันใช้ dpm และ print_r และฉันเห็น stdClass Object ( [success] => [field_file_svg] => Array ( [target_id] => 21 [alt] => Alt1 [title] => Title1 ) ) field_file_svg
mariosdaskalas avatar
as flag
@ 4uk4 ฉันเห็น field_file_svg ใน fieldDefinitions ได้ดี แต่ไม่ใช่ในอาร์เรย์ #values ​​ใน devel

โพสต์คำตอบ

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