ในเว็บไซต์ของฉัน (drupal 9.2.8) ผู้ใช้เพิ่มเนื้อหาและไม่จำเป็นต้องใส่ข้อมูลใดๆ ลงในฟิลด์ 'ชื่อเรื่อง'
ฉันพยายามทำให้ฟิลด์นี้ไม่ต้องการผ่าน form_alter ในโมดูลที่กำหนดเอง แต่ไม่ได้ผล:
ฟังก์ชัน yourmodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){
ถ้า ($form['#form_id'] == 'node_somenode_form' หรือ $form['#form_id'] == 'node_somenode_form'){
$form['title']['widget']['0']['#required'] = FALSE; // ไม่ทำงาน
$form['title']['widget']['#required'] = FALSE; // ไม่ทำงาน
$form['title']['#required'] = FALSE; // ไม่ทำงาน
}
}
วิธีแก้ปัญหาในโมดูลของฉัน ฉันเติมชื่อล่วงหน้าโดยใช้ form_alter:
$form['title']['widget']['0']['value']['#default_value'] = 'ชื่อเริ่มต้นใดๆ';
แล้วซ่อนฟิลด์นี้จากแบบฟอร์ม มีสองสามวิธีในการทำเช่นนั้น (ในแบบฟอร์มแก้ไขวิธีซ่อนฟิลด์ต่างกันอย่างไรและอะไรคือความแตกต่างระหว่างพวกเขา
) ฉันตัดสินใจใช้การซ่อน:
ซ่อน ($ แบบฟอร์ม ['ชื่อเรื่อง']);
แต่ฉันอยากรู้ทำไม ['#จำเป็น'] = FALSE;
ใช้ไม่ได้กับฟิลด์ Title แต่ใช้งานได้ดีกับฟิลด์อื่น