Score:0

วิธีเพิ่มช่องทำเครื่องหมายโดยใช้ hook_field_widget_WIDGET_TYPE_form_alter()

ธง gb

รัน Drupal 9 ด้วยโมดูลย่อหน้า, ย่อหน้าแบบยุบได้และย่อหน้า jquery ui ติดตั้งหีบเพลง ฉันต้องการแก้ไขรูปแบบย่อหน้า โดยเฉพาะที่แสดงไฟล์ส่วนตัวโดยเพิ่มช่องทำเครื่องหมาย 'เปลี่ยนเป็นสาธารณะ' ใต้คำอธิบายไฟล์แต่ละรายการ (ดูภาพที่แนบมา)

ฉันใช้ hook_field_widget_WIDGET_TYPE_form_alter() นี่คือรหัสตัวอย่าง:

**
 * ใช้ hook_field_widget_WIDGET_TYPE_form_alter()
 */

 ฟังก์ชัน sbn_field_widget_paragraphs_form_alter(&$องค์ประกอบ, &$form_state, $บริบท) {
     ถ้า (!empty($element['subform']['field_private_files'])) {
         
# องค์ประกอบ $['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = [
# '#type' => 'ช่องทำเครื่องหมาย',
# '#title' => t('เปลี่ยนเป็นสาธารณะ'),
# '#required' => เท็จ
# '#default_value' => เท็จ
# ];

     $element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = อาร์เรย์(
        '#type' => 'ช่องทำเครื่องหมาย',
        '#title' => t('เปลี่ยนเป็นสาธารณะ'),
        '#ขนาด' => 10,
        '#maxlength' => 255,
        '#default_value' => 1,
        '#required' => เท็จ
        '#description' => '<p>' t('เปลี่ยนจากส่วนตัวเป็นสาธารณะ') . '</p>',
    );
 
        // dsm($องค์ประกอบ);
     }
}

ฉันรู้ว่าองค์ประกอบอาร์เรย์อยู่ที่นั่นเพราะฉันใช้ dsm เพื่อพิมพ์แบบฟอร์มทั้งหมดหากมี ['subform']['field_private_files'] อยู่:

   [field_private_files] => อาร์เรย์
        (
            [#type] => คอนเทนเนอร์
            [#parents] => อาร์เรย์
                (
                    [0] => field_body1
                    [1] => 7
                    [2] => ฟอร์มย่อย
                    [3] => field_body2
                    [4] => 0
                    [5] => ฟอร์มย่อย
                    [6] => field_private_files_wrapper
                )

            [#attributes] => อาร์เรย์
                (
                    [คลาส] => อาร์เรย์
                        (
                            [0] => ฟิลด์--ประเภท-ไฟล์
                            [1] => ฟิลด์--ชื่อ-ฟิลด์-ไฟล์ส่วนตัว
                            [2] => field--widget-file-generic
                            [3] => ย่อหน้าเนื้อหา
                        )

                )

            [วิดเจ็ต] => อาร์เรย์
                (
                    [0] => อาร์เรย์
                        (
                            [#title] => ไฟล์ส่วนตัว
                            [#รายละเอียด] => 
                            [#field_parents] => อาร์เรย์
                                (
                                    [0] => field_body1
                                    [1] => 7
                                    [2] => ฟอร์มย่อย
                                    [3] => field_body2
                                    [4] => 0
                                    [5] => ฟอร์มย่อย
                                )

                            [#จำเป็น] => 
                            [#เดลต้า] => 0
                            [#น้ำหนัก] => 0
                            [#type] => Managed_file
                            [#upload_location] => ส่วนตัว://
                            [#upload_validators] => อาร์เรย์
                                (
                                    [file_validate_size] => อาร์เรย์(1)
                                    [file_validate_extensions] => อาร์เรย์(1)
                                )

                            [#value_callback] => อาร์เรย์
                                (
                                    [0] => Drupal\file\Plugin\Field\FieldWidget\FileWidget
                                    [1] => ค่า
                                )

                            [#กระบวนการ] => อาร์เรย์
                                (
                                    [0] => อาร์เรย์(2)
                                    [1] => อาร์เรย์(2)
                                )

                            [#progress_indicator] => ตัวสั่น
                            [#ขยาย] => 1
                            [#field_name] => field_private_files
                            [#entity_type] => ย่อหน้า
                            [#display_field] => 1
                            [#display_default] => 1
                            [#description_field] => 1
                            [#จำนวนสมาชิก] => -1
                            [#default_value] => อาร์เรย์
                                (
                                    [target_id] => 436
                                    [จอแสดงผล] => 1
                                    [description] => การประชุมผู้บริหาร นาทีที่ 11-15-21
                                    [fids] => อาร์เรย์(1)
                                )

คำแนะนำใดๆ เกี่ยวกับวิธีเขียนโค้ดนี้เพื่อให้ช่องทำเครื่องหมายถูกพิมพ์ใต้ 'คำอธิบาย' ของส่วนไฟล์ส่วนตัวแต่ละส่วนของแต่ละย่อหน้า (อาจมีหลายย่อหน้าแนบกับแต่ละโหนด) ขอบคุณ!

sonfd avatar
in flag
สิ่งนี้ควรทำด้วยวิดเจ็ตฟิลด์สำหรับฟิลด์ไฟล์ส่วนตัว ไม่ใช่ผ่านแบบฟอร์มของย่อหน้า
SomebodySysop avatar
gb flag
คุณช่วยชี้ตัวอย่างที่คุณหมายถึงได้ไหม ฉันต้องใช้เวลาตลอดไปเพื่อหาวิธีใช้ hook กับย่อหน้า! ไม่มีเอกสารมากมายเกี่ยวกับวิธีใช้ที่นั่น
sonfd avatar
in flag
https://www.drupal.org/docs/creating-custom-modules/creating-custom-field-types-widgets-and-formatters/create-a-custom-field-widget

โพสต์คำตอบ

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