Score:0

ตั้งค่า ['#default_value'] ของฟิลด์อ้างอิงคำศัพท์อนุกรมวิธานผ่าน hook_form_alter() หรือไม่

ธง nr

ต่อไปนี้เป็นคำถามอื่นที่มีฟิลด์อ้างอิงคำศัพท์อนุกรมวิธานเดียวกันกับที่ฉันกล่าวถึง คำถามก่อนหน้าของฉัน.

ผู้ใช้ที่มีบทบาทผู้ดูแลระบบและโค้ชได้รับอนุญาตให้ลงทะเบียนผู้ใช้ที่เป็นนักเรียนผ่านโหมดแบบฟอร์ม "เพิ่มนักเรียน" แบบกำหนดเอง (user_add_student_form). มันจะดีกว่าสำหรับ UX ถ้าฉันสามารถตั้งค่า ['#default_value'] ของ เลือก_a_โรงเรียน ฟิลด์อ้างอิงคำศัพท์อนุกรมวิธานไปยังโรงเรียนเดียวกันกับที่ผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบันเป็นสมาชิก

ฉันกำลังทำงานกับ hook_form_alter() ในกระบวนการเตรียมล่วงหน้าของเทมเพลตเพราะนั่นเป็นวิธีที่ผู้พัฒนาคนก่อนตั้งค่า:

/**
 * ใช้ hook_form_alter()
 */
ฟังก์ชัน projectname_form_alter(&$form, &$form_state, $form_id) {
  // รับผู้ใช้ปัจจุบัน
  $current_user_proxy = \Drupal::currentUser();
  $current_user_id = $current_user_proxy->id();
  ถ้า (!$current_user_proxy->isAnonymous()) {
    $currentUser = ผู้ใช้::โหลด($current_user_id);
    // รับโรงเรียนของผู้ใช้ปัจจุบัน
    $currentSchool = $currentUser->field_select_a_school->getValue();
    // จัดการเพิ่มแบบฟอร์มนักเรียน
    ถ้า ($form_id == 'user_add_student_form') {
      // งานนี้.
      $form['account']['roles']['#access'] = FALSE;
      $form['account']['roles']['#default_value'] = [
        0 => 'รับรอง',
        1 => 'นักเรียน',
      ];
      // วิธีนี้ใช้ไม่ได้
      $form['field_select_a_school']['#default_value'] = $currentSchool;
    }

การตั้งค่า $form['บัญชี']['บทบาท']['#default_value'] ทำงานตามที่คาดไว้ แต่ฟิลด์อ้างอิงคำศัพท์อนุกรมวิธานต่อต้านความพยายามดังกล่าวทั้งหมด

ฉันได้ลองรูปแบบต่อไปนี้แล้ว:

      $form['field_select_a_school']['#default_value'] = $currentSchool;
      $form['field_select_a_school']['#default_value'][] = $currentSchool;
      $form['field_select_a_school']['widget']['#default_value'] = $currentSchool;
      $form['field_select_a_school']['widget']['#default_value'][] = $currentSchool;
      การถ่ายโอนข้อมูล ($currentSchool);

Symfony VarDumper การถ่ายโอนข้อมูล () ของ $currentSchool ดูเหมือนว่าจะมีโครงสร้างข้อมูลที่ถูกต้อง:

^ อาร์เรย์:1 [â¼
  0 => อาร์เรย์:1 [â¼
    "target_id" => "916"
  ]
]

ที่นี่สำหรับการอ้างอิงเป็นสิ่งที่สอดคล้องกัน การถ่ายโอนข้อมูล () สำหรับช่องเป้าหมายใน $รูปแบบ:

  "field_select_a_school" => อาร์เรย์:8 [â¼
    "#type" => "คอนเทนเนอร์"
    "#parents" => อาร์เรย์:1 [â¶]
    "#attributes" => อาร์เรย์:1 [â¶]
    "widget" => อาร์เรย์:22 [â¼
      "#title" => "เลือกโรงเรียน*"
      "#คำอธิบาย" => ""
      "#field_parents" => []
      "#required" => จริง
      "#เดลต้า" => 0
      "#น้ำหนัก" => 0
      "#element_validate" => อาร์เรย์:1 [â¶]
      "#key_column" => "target_id"
      "#ประเภท" => "เลือก"
      "#options" => อาร์เรย์:47 [â¶]
      "#default_value" => []
      "#หลายรายการ" => เท็จ
      "#shs" => อาร์เรย์:7 [â¶]
      "#attributes" => อาร์เรย์:1 [â¶]
      "#attached" => อาร์เรย์:1 [â¶]
      "#entity_type" => "ผู้ใช้"
      "#bundle" => "ผู้ใช้"
      "#after_build" => อาร์เรย์:1 [â¶]
      "#field_name" => "field_select_a_school"
      "#parents" => อาร์เรย์:1 [â¶]
      "#tree" => จริง
      "#form_id" => "user_add_student_form"
    ]
    "#เข้าถึง" => จริง
    "#น้ำหนัก" => 22
    "#แคช" => อาร์เรย์:3 [â¶]
    "#form_id" => "user_add_student_form"
  ]

ไม่ว่าฉันจะพยายาม $form['field_select_a_school']['widget']['#default_value'] จบลงด้วยการมีอาร์เรย์ว่างเสมอ ¯\_(ã)_/¯

ฉันพลาดอะไรไปที่นี่?

cn flag
จากการคัดลอก/วาง จะเป็น `$form['field_select_a_school']['widget']['#default_value'] = $currentSchool[0]['target_id'];` (หรือ `$form['field_select_a_school'][' widget']['#default_value'][] = $currentSchool[0]['target_id'];` ถ้าช่องมีหลายค่า)
hotwebmatter avatar
nr flag
เอ่อ ฉันแค่คิดว่าฉันต้องจับคู่โครงสร้างข้อมูลทั้งหมดแทนที่จะส่ง TID ฉันจะลองทำดู ขอบคุณ!
hotwebmatter avatar
nr flag
ดีมาก @Clive แต่ฉันเพิ่ม `$form['field_select_a_school']['widget']['#default_value'] = $currentSchool[0]['target_id'];` และฉันยังคงได้รับ `"#default_value" => []`.

โพสต์คำตอบ

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