มีวิธีการตั้งค่าใน form_alter หรือไม่? หรือฉันควรตรวจสอบสถานะช่องทำเครื่องหมายผ่าน JS
คุณสามารถแทนที่ #ที่จำเป็น
โดยการตั้งค่าตัวจัดการการตรวจสอบความถูกต้องแบบกำหนดเองในรูปแบบ alter hook หากคุณต้องการสร้างข้อความแสดงข้อผิดพลาดฝั่งเซิร์ฟเวอร์:
$form_state->setErrorByName('field_tos_accept', $error_message);
เมื่อฉันเพิ่ม '#required_error' สิ่งนี้ควร - ในความเข้าใจของฉัน - ส่งข้อความแสดงข้อผิดพลาดเมื่อส่งแบบฟอร์ม
#required_error'
เปิดตัวในปี 2554 แต่เมื่อ Drupal 8 เปิดตัวดูเหมือนว่าจะหยุดทำงานในเบราว์เซอร์ที่รองรับการตรวจสอบความถูกต้องของแบบฟอร์ม HTML5 ดังนั้นจึงไม่เคยนำมาใช้จริง ๆ
อย่างไรก็ตาม คุณสามารถใช้แอตทริบิวต์ฟอร์ม HTML5 ปรับปรุงใหม่
เพื่อปิดใช้งานการตรวจสอบแบบฟอร์มฝั่งไคลเอ็นต์ จากนั้นคุณสมบัตินี้จะใช้งานได้อีกครั้ง และคุณจะได้รับข้อความแสดงข้อผิดพลาดที่กำหนดเองโดยไม่มีตัวจัดการการตรวจสอบความถูกต้องแบบกำหนดเอง:
ฟังก์ชัน themename_form_alter(&$form, &$form_state, $form_id) {
// สำหรับฟอร์มเอนทิตี $form_id ประกอบด้วย
// ENTITY_TYPE_BUNDLE_FORM_MODE_form
// BUNDLE ก็ต่อเมื่อเอนทิตีมีบันเดิล
// FORM_MODE เฉพาะในกรณีที่ไม่ใช่ค่าเริ่มต้น
// ตัวอย่าง:
// node_article_edit_form - โหนดแก้ไขแบบฟอร์มสำหรับบทความประเภทเนื้อหา
// node_page_form - โหนดสร้างแบบฟอร์มสำหรับหน้าประเภทเนื้อหา
// โหนดใช้สำหรับสร้างฟอร์มโหมดฟอร์มเริ่มต้น
ถ้า ($form_id == 'node_nodetype_form') {
$form['#attributes']['novalidate'] = 'novalidate';
$แบบฟอร์ม['field_tos_accept'] = [
'#type' => 'ช่องทำเครื่องหมาย',
'#title' => t('ฉันยอมรับเงื่อนไขการบริการ'),
'#น้ำหนัก' => '999',
'#required' => จริง,
'#required_error' => t('โปรดยอมรับข้อกำหนดในการให้บริการ'),
];
}
}
ดู https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-novalidate