Score:0

hook_form_alter() เพื่อเพิ่มตัวยึดตำแหน่งในช่องข้อความผ่านโมดูลที่กำหนดเอง

ธง vn

มันควรจะตรงไปตรงมามาก แต่ฉันก็ไม่สามารถระบุเหตุผลว่าทำไมสิ่งนี้จึงไม่เพิ่มตัวยึดตำแหน่งให้กับฟิลด์ในแบบฟอร์ม:

ฟังก์ชัน posts_form_alter (&$form, FormStateInterface $form_state, $form_id) {
  ถ้า ($form_id == "node_post_form" || $form_id == "node_post_edit_form") {
    $form['field_post_subject']['#attributes']['placeholder'] = t("blah");
    dpm($form['field_post_subject']);
  }
}

ซึ่งเป็นการยืนยันว่าคีย์ ตัวยึด กำลังตั้งค่า:

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

hook_form_alter() ทำงานตามที่คาดไว้สำหรับสิ่งอื่นๆ ที่ฉันต้องเปลี่ยน ยกเว้นตัวยึดตำแหน่ง ฉันดูทุกที่และมันก็เป็นทางออกเดียวกันเสมอ ดังนั้นฉันจึงสงสัยว่าฉันพลาดอะไรไป?

cn flag
คุณสร้างแคชใหม่หรือไม่ นอกจากนี้ ตรวจสอบเทมเพลตธีมของคุณและฟังก์ชันการประมวลผลล่วงหน้าใดๆ คุณอาจกำลังลบหรือละเว้นตัวยึดตำแหน่งในบรรทัด
vn flag
ขอบคุณ @PatrickKenny ใช่ ฉันสร้างใหม่ + ลองกับธีมอื่นรวมถึง Bartik ฉันยังลองกับรูปแบบอื่น ๆ แต่ยังไม่มีโชค
cn flag
เป็นสนามประเภทไหน?
leymannx avatar
ne flag
ดูเหมือนว่าคุณตั้งค่าตัวยึดในองค์ประกอบ `'#type' => 'container'` คุณต้องเข้าไปใน `วิดเจ็ต`
vn flag
ขอบคุณสำหรับคำแนะนำของคุณ @leymannx - วิธีแก้ปัญหา 4uk4 ที่แนะนำนั้นใช้ได้ผล
vn flag
มันเป็นช่องข้อความธรรมดาธรรมดา @PatrickKenny
Score:2
ธง cn

ขณะนี้ คุณกำลังตั้งค่าแอตทริบิวต์ตัวยึดตำแหน่งเป็นคอนเทนเนอร์ ซึ่งควรจะมองเห็นได้ใน HTML ต้นทาง แต่ไม่มีผลใดๆ ต่อฟอร์ม

คุณต้องเพิ่มตัวยึดตำแหน่งให้กับองค์ประกอบฟอร์ม คุณพบอย่างน้อยหนึ่งฟิลด์สำหรับฟิลด์ที่มีหลายค่าหรือหลายคุณสมบัติภายใน วิดเจ็ต คีย์ (ในผลลัพธ์การดีบักของคุณคือลูกของคอนเทนเนอร์)

ช่องข้อความมีตัวเลือกที่กำหนดค่าได้สำหรับตัวยึดตำแหน่งอยู่แล้ว หากคุณต้องการเขียนทับแบบไดนามิก คุณต้องมองหาองค์ประกอบแบบฟอร์มและตั้งค่า #placeholder ใหม่

นี่คือองค์ประกอบแบบฟอร์มที่คุณกำลังมองหา:

StringTextfieldWidget::formElement

$องค์ประกอบ['ค่า'] = $องค์ประกอบ + [
  '#type' => 'ช่องข้อความ',
  '#default_value' => $items[$delta]->value ?? โมฆะ,
  '#size' => $this->getSetting('ขนาด'),
  '#placeholder' => $this->getSetting('ตัวยึด'),
  '#maxlength' => $this->getFieldSetting('max_length'),
  '#attributes' => ['class' => ['js-text-full', 'text-full']],
];
vn flag
ขอบคุณมากสำหรับการตอบกลับที่สมบูรณ์ของคุณ! สำหรับการอ้างอิงในอนาคต `$form['field_name']['widget'][0]['value']['#placeholder']` คือที่ตั้งตัวยึดตำแหน่ง

โพสต์คำตอบ

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