Score:0

โปรไฟล์ลูกค้าไม่สามารถเก็บค่าได้มากกว่า 1 ค่า แม้ว่าจะอนุญาตให้มีหลายโปรไฟล์ต่อผู้ใช้ก็ตาม

ธง in

ฉันมี API แบบกำหนดเองที่สร้างใหม่ ลูกค้า โปรไฟล์ที่มีที่อยู่ / อีเมลต่างกัน:

$profileStorage->สร้าง([
        'ประเภท' => 'ลูกค้า',
        'uid' => $this->currentUser->id(),
        'สถานะ'=> 1,
        'ที่อยู่' => $addressData
])
$profile->setDefault(จริง);
$profile->save();

มันทำงานสร้างโปรไฟล์เหล่านั้นและแนบกับผู้ใช้ปัจจุบัน อย่างไรก็ตาม เมื่อใดก็ตามที่ฉันพยายามแก้ไขฟิลด์บัญชีผู้ใช้หรือเพียงแค่ใช้ $user->validate() ฉันได้รับข้อผิดพลาดนี้:

"customer_profiles: โปรไฟล์ลูกค้า: ฟิลด์นี้ไม่สามารถเก็บค่าได้มากกว่า 1 ค่า"

อย่างไรก็ตาม ประเภทโปรไฟล์ลูกค้ามีทั้ง "อนุญาตหลายโปรไฟล์ต่อผู้ใช้" และ "โปรไฟล์ประเภทนี้แสดงถึงโปรไฟล์ลูกค้า Commerce"

นี่เป็นกรณีใน Drupal 8 และ 9

ป้อนคำอธิบายรูปภาพที่นี่

อัปเดต:

ดูเหมือนว่าข้อผิดพลาดนี้จะเกิดขึ้นจริงที่ $entity->ตรวจสอบ (), ไม่บน บันทึก()

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือเนื้อหาของ core.entity_form_display.profile.customer.default.yml

ใช้งาน: xxx7f0e2-d809-4d2b-9388-af399c98xxxx
รหัสภาษา: th
สถานะ: จริง
การพึ่งพา:
  การกำหนดค่า:
    - field.field.profile.customer.address
    - field.field.profile.customer.field_email
    - profile.type.customer
  โมดูล:
    - ที่อยู่
  บังคับใช้:
    โมดูล:
      - commerce_order
_core:
  default_config_hash: xxxxVkJkUSPhil9xxxxdTivMqxCUloT_71AHWxxxx
id: profile.customer.default
targetEntityType: โปรไฟล์
กลุ่ม: ลูกค้า
โหมด: ค่าเริ่มต้น
เนื้อหา:
  ที่อยู่:
    ประเภท: address_default
    น้ำหนัก: 0
    ภูมิภาค: เนื้อหา
    การตั้งค่า: {  }
    third_party_settings: { }
  field_email:
    ประเภท: email_default
    น้ำหนัก: 1
    ภูมิภาค: เนื้อหา
    การตั้งค่า:
      ตัวยึดตำแหน่ง: ''
      ขนาด: 60
    third_party_settings: { }
ที่ซ่อนอยู่: {  }

และเนื้อหาของ profile.type.customer.yml

ใช้: xxxx4f32-xxxx-xxxx-xxxx-bd10470bxxxx
รหัสภาษา: th
สถานะ: จริง
การพึ่งพา:
  บังคับใช้:
    โมดูล:
      - commerce_order
third_party_settings:
  commerce_order:
    customer_profile_type: จริง
_core:
  default_config_hash: xxxxAQDUxxxxwavxxxxlcbJx9xxxxFtCq8l73Axxxx
id:ลูกค้า
ป้ายกำกับ: ลูกค้า
display_label: 'ข้อมูลลูกค้า'
หลาย: จริง
การลงทะเบียน: เท็จ
บทบาท:
  รับรองความถูกต้อง: รับรองความถูกต้อง
  Verify_email: ยืนยันอีเมลแล้ว
  Verify_cc: ยืนยันแล้ว _cc
allow_revisions: เท็จ
new_revision: เท็จ
Score:0
ธง it

การตั้งค่าดังกล่าวหมายความว่าลูกค้าอาจมีหลายโปรไฟล์ในประเภทนั้นที่กำหนดให้กับ uid ของพวกเขา ไม่ใช่ว่าทุกฟิลด์อ้างอิงโปรไฟล์สามารถใช้สำหรับการอ้างอิงหลายค่าได้ ที่กล่าวว่า ฉันไม่ทราบฟิลด์ใน Commerce Core เรียกว่า ลูกค้า_โปรไฟล์. นี่เป็นสิ่งที่กำหนดเองหรือไม่? คุณอาจต้องอัปเดตคำจำกัดความเพื่อให้สามารถใส่การอ้างอิงหลายรายการได้

in flag
ฉันสร้าง / แนบโปรไฟล์ไม่ถูกต้องหรือไม่ เป้าหมายของฉันคือ "ลูกค้าอาจมีโปรไฟล์หลายประเภทที่กำหนดให้กับ uid ของพวกเขา"
in flag
นอกจากนี้ ฉันคิดว่า "customer_profiles" เป็นเพียงชื่อเครื่องจากการสร้างประเภทโปรไฟล์ที่เรียกว่า "ลูกค้า" คุณกำลังแนะนำให้ฉันอัปเดตอะไรกันแน่
it flag
คุณมีช่องบนไซต์ของคุณชื่อ "โปรไฟล์ลูกค้า" ไหนว่ามาจากไหน?
in flag
ฉันโพสต์ไฟล์ yml ของฉันหากอาจช่วยได้ นอกจากนี้ยังพบว่าข้อผิดพลาดเกิดขึ้นใน `$user->validate()` ไม่ใช่ `$user->save()`
in flag
นอกจากนี้ `โปรไฟล์ลูกค้า` เป็น 'ประเภทโปรไฟล์' ไม่ใช่ฟิลด์ ซึ่งจัดทำโดย Commerce: https://docs.drupalcommerce.org/commerce2/developer-guide/customers/profiles/profile-configuration - พร้อมกับ `field_address` . ฉันเพิ่ม a`field_email`
it flag
ตกลง. ในกรณีนั้น ฉันไม่เข้าใจข้อความแสดงข้อผิดพลาด ซึ่งระบุว่าฟิลด์ไม่ถูกต้อง ฉันไม่แน่ใจว่ามีอะไรอีกมากที่ฉันสามารถช่วยได้

โพสต์คำตอบ

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