คำถามติดแท็ก forms

ใช้สำหรับคำถามเกี่ยวกับแบบฟอร์ม API อย่าใช้มันสำหรับฟอร์มเอนทิตีหรือเอนทิตี

3
หลายค่าไปยังทริกเกอร์ #states
ฉันจะมีหลายค่าเพื่อกระตุ้น #states ของ Form API ได้อย่างไร พูดเช่นฉันต้องการให้ฟิลด์นี้สามารถมองเห็นได้ถ้าค่าเป็น 5 (ปัจจุบันทำงานด้านล่าง) แต่ต้องการทำให้ฟิลด์นี้ปรากฏถ้าค่าคือ 3, 4 หรือ 5 '#states' => array( 'visible' => array( ':input[name="field_star_rating"]' => array('value' => t('5')), ), ), เป็นบันทึกผมพยายามต่อไปและจะไม่ทำงาน ใช้งานได้เฉพาะถ้าค่าเป็น '4' '#states' => array( 'visible' => array( ':input[name="field_star_rating"]' => array('value' => t('5')), ':input[name="field_star_rating"]' => array('value' => t('4')), ), ), สิ่งนี้ยังใช้งานไม่ได้ แต่จะทำงานได้ก็ต่อเมื่อค่าเป็น …
18 7  forms  javascript 

4
คุณใช้ตัวจัดการการส่งแบบกำหนดเองใน hook_form_alter () ได้อย่างไร
ฉันได้อัปเดตหนึ่งในโมดูล Drupal 7 เป็น 8 และฉันมีปัญหากับการเปลี่ยนแปลงแบบฟอร์มของฉัน ฉันกำลังเพิ่มฟังก์ชั่นการตรวจสอบความถูกต้องและตัวจัดการการส่ง ฟังก์ชั่นการตรวจสอบความถูกเรียกว่าใช้ได้ แต่ฟังก์ชั่นส่งไม่เริ่มทำงาน ฉันสงสัยว่าสิ่งนี้หมายความว่ามีวิธี Symfony สไตล์ที่ต้องดำเนินการเพื่อเพิ่มตัวจัดการการส่งไปยังแบบฟอร์มที่มีอยู่ ฉันทำการค้นหาจำนวนมากและไม่พบตัวอย่างใด ๆ เลย ยังดูถึงโมดูล D8 ที่กำลังทำงานอยู่บางส่วน แต่ฉันไม่พบตัวอย่างการทำงานที่นั่นด้วยเช่นกัน ไม่มีใครมีความคิดใด ๆ ว่าวิธีที่ถูกต้องของ Drupal 8 คืออะไร?
16 forms  8 

2
ฉันจะเปลี่ยนเครื่องมือจัดการการส่งฟอร์มได้อย่างไร
ด้วยเหตุผลบางอย่างฉันต้องแทนที่อักขระบางตัว (ถ้ามี) ในทุก ๆ textfields ในรูปแบบใด ๆ ก่อนที่พวกเขาจะถูกเก็บไว้ในฐานข้อมูล กล่าวอีกนัยหนึ่งฉันต้องการตะขอที่ฉันสามารถรับข้อมูลที่ส่งมาทั้งหมดและแทนที่ตัวละครของพวกเขา ฉันพบวิธีแก้ปัญหานี้: function hook_form_alter($form, $form_state, $form_id) { $form['#submit'] = 'my_custom_submission_function'; } แต่นี่ไม่ใช่ความคิดที่ดีเพราะฉันต้องดูแลความคืบหน้าของการส่งที่เหลือด้วย ฉันต้องการแทนที่ตัวละครบางตัว มีเบ็ดทำเช่นนี้? การแก้ปัญหาคืออะไร?
16 7  hooks  forms 

2
เปลี่ยน $ form_state ในการโทรกลับ AJAX
ฉันกำลังสร้างแบบฟอร์มที่ใช้'#ajax'แอตทริบิวต์API แบบฟอร์มและฉันต้องทำการเปลี่ยนแปลง$form_stateเมื่อกดปุ่มเปิดใช้งาน AJAX นี่คือสิ่งที่ฉันได้รับ: ภายในฟังก์ชันตัวสร้างแบบฟอร์มของฉัน: ... $form['some_fieldset']['add_more'] = array( '#type' => 'button', '#value' => t('Add more rows'), '#ajax' => array( 'wrapper' => 'some-fieldset', 'callback' => 'my_module_settings_ajax', 'method' => 'replace', 'effect' => 'fade', ), ); ... และนี่คือฟังก์ชันการเรียกกลับ: function my_module_settings_ajax($form, $form_state) { // Make a change to $form_state if ($form_state['some_fieldset']['add_more']) { $form_state['values']['some_fieldset']['table'][] …
16 7  forms  ajax 

12
ตั้งค่าเริ่มต้นรายการที่เลือกเลือก [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันมีรายการที่เลือกพร้อมตัวเลือก: $options = array(0 => '0', 500 => '500', 1000 => '1000'); ฉันกำลังพยายามตั้งเป็นค่าเริ่มต้นที่ 500: $form['price']['min']['#options'] = $options; $form['price']['min']['#default_value'] = 500; แต่มันไม่ทำงาน
16 forms 

3
เปลี่ยนเส้นทางหลังจากส่งแบบฟอร์ม
ฉันสร้างฟอร์มที่กำหนดเองใน Drupal 8 ฉันจำได้ว่าเราสามารถเปลี่ยนเส้นทางไปยังเส้นทางที่กำหนดเองใน Drupal 7 พร้อมตั้งค่า$form_state['redirect'] = 'mycustompath';ในตัวจัดการการส่งที่กำหนดเอง แต่จะเปลี่ยนเส้นทางผู้ใช้หลังจากการส่งฟอร์มใน Drupal 8 ได้อย่างไร ฉันรู้ว่าฉันควรใช้submitFormวิธีการ: public function submitForm(array &$form, FormStateInterface $form_state) { //submissions jobs ... //redirect path }
15 forms  8  redirection 

2
ฉันจะส่งพารามิเตอร์ไปยังตัวสร้างฟอร์มได้อย่างไร
ฉันมีเส้นทางต่อไปนี้ใน module_name.routing.yml module_name.usergroup_delete: path: 'module_name/usergroup/delete/{arg1}' defaults: _form: '\Drupal\module_name\Form\DeleteUserGroup' _title: 'Delete User group' requirements: _permission: 'access admin menus' นี่คือรหัสใน module_name / src / Form / DeleteUserGroup.php namespace Drupal\module_name\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; class DeleteUserGroup extends ConfigFormBase { public function getFormId() { return 'delete_user_group'; } /** * General form for switching all …
15 forms  8 

4
เปลี่ยนเส้นทางไปยังหน้าเว็บที่กำหนดเองหลังจากที่เพิ่มหรือแก้ไขโหนดแล้ว
การใช้hook_form_alterฉันจะเปลี่ยนเส้นทางผู้ใช้ไปยังเพจที่กำหนดเองหลังจากสร้างหรือแก้ไขโหนดแทนโหนดที่สร้างหรือแก้ไขได้อย่างไร รหัสปัจจุบันสำหรับhook_form_alter()เป็นรหัสต่อไปนี้: function custom_form_alter(&$form, &$form_state, $form_id) { if ($form['#id'] == 'custom-node-form') { $form['actions']['submit']['#value'] = t('Add Entry'); $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email'); } }
15 7  forms  redirection 

2
แบบฟอร์มภายในบล็อก
ฉันใช้drupal_get_form('event_signup_form')เพื่อฝังฟอร์มที่กำหนดเองของฉันไว้ในบล็อก ฟอร์มกำลังถูกเรนเดอร์ตามที่ตั้งใจ แต่การส่งแบบฟอร์มไม่ได้ก่อให้เกิดอะไร ฟังก์ชั่นรูปแบบของตัวเองเรียกว่าevent_signup_form($form, &$form_state)และฟังก์ชั่นส่งเรียกว่าevent_signup_form_submit($form, &$form_state)แต่มันไม่ได้ถูกเรียก ฉันใช้hook_block_viewเพื่อแสดงแบบฟอร์ม: function event_block_view($delta = '') { $blocks = array(); if ($delta ...) { $blocks['content'] = drupal_render(drupal_get_form('event_signup_form')); } } ฉันจัดการเพื่อให้การทำงาน - นี่คือวิธี (ต้นขั้ว): function hook_block_view($delta = '') { $blocks['content'] = drupal_render(drupal_get_form('event_signup_form')); } function event_signup_form() { // Register form submit handler, same goes for validation handler …
14 7  blocks  forms 

3
ฉันจะใช้การส่งแบบฟอร์ม AJAX ได้อย่างไร
งานของฉันคือส่งแบบฟอร์มการติดต่อผ่าน AJAXและแสดง "ขอบคุณสำหรับการส่ง!" ข้อความถูกโหลดในตำแหน่งที่ฟอร์มอยู่ ดังนั้นฉันต้อง ajaxify แบบฟอร์มการติดต่อที่มีอยู่ ฉันพบตัวอย่างวิธีการตรวจสอบความถูกต้องของเขตข้อมูลฟอร์มโดยใช้ AJAX ใน D8 แต่ฉันไม่สามารถหาตัวอย่างใด ๆ ที่จะใช้การส่งแบบฟอร์ม ajaxและโหลดเนื้อหาบางส่วนผ่าน AJAX แล้ว ฉันจะใช้งานของฉันได้อย่างไร ฉันจะเปลี่ยนแบบฟอร์มการติดต่อเพื่อเพิ่มฟังก์ชันการทำงานที่จำเป็นได้อย่างไร
14 ajax  8  forms 

3
ฉันจะเพิ่มตัวจัดการการส่งข้อมูลเพิ่มเติมในแบบฟอร์มการชำระเงินเพื่อการพาณิชย์ได้อย่างไร
ฉันจะเพิ่มตัวจัดการการส่งเพิ่มเติมได้อย่างไร ฉันได้ลองแล้ว แต่มันใช้งานไม่ได้ function c_coupon_form_alter(&$form, $form_state, $form_id) { drupal_set_message($form_id); switch($form_id) { case 'commerce_checkout_form_review': drupal_set_message($form_id . '_form submit'); $form['#submit'][] = 'c_coupon_review_submit'; } } function c_coupon_review_submit($form, &$form_state) { drupal_set_message('submitted'); }
14 commerce  forms 

1
ฉันจะใช้ส่งโทรกลับในแบบฟอร์มการตั้งค่าผู้ดูแลระบบ Drupal ได้อย่างไร
ฉันใช้รหัสนี้เพื่อสร้างแบบฟอร์มผู้ดูแลระบบของฉัน: function custom_orders_admin(){ $form = array(); $form['custom_ignore_terms']['ignore_terms'] = array( '#type' => 'checkboxes', '#title' => t('Don\'t display these'), '#default_value' => variable_get('custom_ignore_terms', array()), '#options' => drupal_map_assoc($termTypes), '#description' => t("Choose the terms you do not want displayed."), '#required' => FALSE, ); return system_settings_form($form); } แต่ฉันสังเกตว่าถ้าฉันทำสิ่งนี้: function custom_orders_admin_submit($form, &$form_state) { exit(var_dump($form_state)); } ฉันออกไม่ได้ ฉันเดาว่านี่เป็นเพราะsystem_settings_form()ดูแลการส่ง …
14 7  forms 

3
วิธีการปิดการใช้งานปุ่มส่งหลังจากคลิก?
Drupal ดูเหมือนจะไม่ป้องกันการส่งหลายรูปแบบแม้ในหน้าโหนด QAนี้แนะนำให้แก้ไขทางฝั่งเซิร์ฟเวอร์ ฉันจะปิดการใช้งานปุ่มส่งหลังจากคลิกได้อย่างไร ทางออกอื่น ๆ
13 7  forms 

3
ฉันจะเพิ่มการตรวจสอบความถูกต้องของแบบฟอร์มฝั่งไคลเอ็นต์ลงในแบบฟอร์ม Drupal ได้อย่างไร
ฉันจะเพิ่มการตรวจสอบความถูกต้องของแบบฟอร์มฝั่งไคลเอ็นต์ลงในแบบฟอร์ม Drupal ได้อย่างไร ตัวอย่างเช่นในโมดูลความคิดเห็น หาก vistor ไม่ได้ป้อนที่อยู่อีเมลฉันต้องการป๊อปอัปหน้าต่างที่ระบุว่า: "โปรดป้อนที่อยู่อีเมล" ฉันหวังว่าบางคนสามารถให้ฉันเป็นตัวอย่างของวิธีการที่ฉันทำ
13 7  forms 

2
วิธีการทำให้ fieldset ที่กำหนดเองยุบตามค่าเริ่มต้นใน Drupal 8
ใน Drupal 7 มีตัวเลือกให้ fieldset สามารถยุบได้หรือไม่และเพื่อ จำกัด สถานะเริ่มต้นขององค์ประกอบแบบฟอร์มนี้ (ยุบหรือยุบ) ตัวอย่าง: $form['contact_data'] = array( '#title' => t("Contact data"), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); ขณะนี้ใน Drupal 8 ฉันไม่สามารถหา attributtes #collapsibleและใน#collapsed Drupal\Core\Render\Element\Fieldsetในเอกสารประกอบอย่างเป็นทางการขององค์ประกอบ Fieldset ไม่ได้กล่าวถึงองค์ประกอบใหม่ใด ๆ ซึ่งควรแทนที่องค์ประกอบ Fieldset นอกจากนี้ยังไม่มีภาพรวมองค์ประกอบ APIสำหรับ Drupal 8 เช่น Drupal 7 คุณต้องค้นหาคำจำกัดความองค์ประกอบ Render ทั้งหมดด้วยตนเองในรหัสซึ่งใช้เวลานานกว่า (โดยเฉพาะเมื่อคุณต้องการดูภาพรวมองค์ประกอบและเปรียบเทียบ) …
13 forms  8 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.