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

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

5
ฉันจะลบข้อมูลการแก้ไขจากแบบฟอร์มการแก้ไขโหนดได้อย่างไร
ฉันหวังว่าบางคนสามารถช่วยผู้เริ่มต้น Drupal ลบมุมมองออกจากหน้าของฉัน จุดประสงค์ของมันคือการรวบรวมข้อมูล นี่คือส่วนที่ฉันพยายามลบ:
10 7  nodes  forms 

5
วิธีการหลีกเลี่ยง“ ตรวจพบตัวเลือกที่ผิดกฎหมาย” เมื่ออัปเดตค่ารายการที่เลือกผ่าน ajax?
ฉันมีสี่ฟิลด์อ้างอิงเอนทิตีไปยังเอนทิตีผู้ใช้ในแบบฟอร์ม รูปแบบโฮสต์เป็นรูปแบบการแก้ไขโหนด สามของพวกเขาจะเลือกรายการสุดท้ายคือInline Entity แบบฟอร์ม หลังจากเพิ่มเอนทิตีผู้ใช้ผ่าน IEF ฉันกำลังพยายามอัปเดตค่ารายการที่เลือก: function ebep_users_feature_users_list_ajax($form, $form_state) { $ief = array_shift($form_state['inline_entity_form']); $options = array('_node' => t('- None -')); $commands = array(); foreach($ief['entities'] as $data) { $options[$data['entity']->uid] = $data['entity']->name; } foreach(_ebep_users_feature_getUserListFieldNames() as $fieldName) { $form[$fieldName]['und']['#options'] = $options; $commands[] = ajax_command_replace('#'.$fieldName.'_wrapper', drupal_render($form[$fieldName])); } return array('#type' => 'ajax', '#commands' …
10 7  ajax  forms 

2
วิธีอัปเดตค่าที่อนุญาตของฟิลด์รายการโดยทางโปรแกรม
ฉันได้สร้างรายการเลือกสำหรับบัญชี Profile2 ใน Drupal 7 ในรายการค่าที่อนุญาตฉันได้เพิ่มค่าบางอย่าง ตอนนี้สิ่งที่ฉันต้องการจะทำคือการปรับปรุงค่าในรายการโดยทางโปรแกรม (เพิ่มลบหรือปรับปรุง) ฉันไม่ต้องการใช้ form_alter เพราะฉันต้องการอัพเดตเหล่านี้ที่ส่งไปยังฐานข้อมูล ปัญหาของฉันคือฉันไม่สามารถหาที่เก็บค่าเหล่านี้ในฐานข้อมูลหรือวิธีดึงค่าเหล่านั้นจาก Profile2 อัปเดตแล้วบันทึก ฉันได้ Googled สูงและต่ำในเรื่องนี้โดยเฉพาะและไม่สามารถหาคำตอบเกี่ยวกับวิธีการทำเช่นนี้ได้ ฉันหวังว่าจะมีคนช่วยฉันออก ขอบคุณ
10 7  forms  users 

1
เพิ่มข้อความหลังฟิลด์อินพุตด้วย form api (ฟิลด์ต่อท้าย)
ฉันกำลังสร้างฟอร์มด้วยฟิลด์ข้อความ หลังจากฟิลด์อินพุตฉันต้องการมีข้อความ แบบนี้: Label * |________| some text Field description รหัสที่ฉันใช้คือ: $form['a_textfield'] = array( '#type' => 'textfield', '#title' => t('A Label'), '#size' => 10, '#maxlength' => 15, '#description' => t('A Field description'), '#required' => TRUE, ); มีวิธีเพิ่ม "ข้อความบางส่วน" หลังจากฟิลด์อินพุตด้วยวิธีนี้หรือไม่? ฉันจะส่งออกโค้ด HTML ด้วยตนเองผ่าน #markup หรือไม่ มีวิธีในการทำเช่นนี้ผ่านการเปลี่ยนแปลงรูปแบบ? หรือฟังก์ชั่นชุดรูปแบบ?
10 7  forms 

3
ฝังฟอร์มเอนทิตี้หนึ่งไปยังอีกฟอร์มหนึ่งและบันทึกทั้งสอง
ฉันมีเอนทิตีที่กำหนดเองซึ่งขึ้นอยู่กับเอนทิตีผู้ใช้ ในความเป็นจริงมันเป็นเช่นนั้นขึ้นอยู่กับว่าฉันรู้สึกว่าเหมาะสมที่จะแสดงฟอร์มเอนทิตีของฉันภายในฟอร์มโปรไฟล์ผู้ใช้: ปัญหาที่ฉันมีตอนนี้คือ; มี 2 ​​ปุ่มบันทึก และถ้ามันไม่ดีพอปุ่มบันทึกสำหรับผู้ใช้ (ปุ่มล่าง) จะไม่สามารถใช้งานได้อีกต่อไปและปุ่มบันทึกฉลากสีขาวจะบันทึกเอนทิตีของป้ายขาวเท่านั้น ฟอร์มถูกเปลี่ยนเป็นแบบฟอร์มผู้ใช้ดังนี้: function whitelabel_form_user_form_alter(&$form, FormStateInterface $form_state) { $whitelabel = WhiteLabel::load(1); $whitelabel_form = \Drupal::service('entity.manager') ->getFormObject('whitelabel', 'default') ->setEntity($whitelabel); $form['whitelabel'] = array( '#type' => 'details', '#title' => t('White label settings'), '#open' => TRUE, 'form' => \Drupal::formBuilder()->getForm($whitelabel_form), ); } ฉันหวังว่าจะสลับพารามิเตอร์บางอย่างใน$whitelabel_formอาร์เรย์ (ซึ่งเคยทำงานใน Drupal 7) แต่อาร์เรย์นั้นมีขนาดใหญ่มากและฉันไม่พบปุ่มส่งและตัวจัดการที่ฉันต้องการ ดังนั้นคำถามคือสามารถทำได้หรือไม่ และอะไรคือวิธีที่แนะนำในการทำ?
9 8  forms  users 

2
วิธีการซ่อนและ / หรือป้องกันการเข้าถึงฟิลด์ในแบบฟอร์มเช่น group_audience สำหรับกลุ่มออร์แกนิก
สิ่งนี้ทำให้ฉันลำบากในขณะที่ .. เมื่อฉันพยายามซ่อนเขตข้อมูลเช่นกลุ่มผู้ชมกลุ่มหรือการตั้งค่าการเผยแพร่จากแบบฟอร์มในการตรวจสอบความถูกต้องแบบฟอร์มตั้งค่าทั้งสองของเขตข้อมูลเหล่านี้เป็นค่า Null แม้ว่าค่า defaut เป็น ได้รับการประกาศอย่างถูกต้อง ฉันพยายามใช้ Invisible, #access, unset hidden ใด ๆ ที่ไม่ทำงาน! นี่เป็นปัญหามากเพราะสำหรับผู้ใช้โครงการปัจจุบันของฉันสามารถแก้ไขโปรไฟล์เพียงเล็กน้อยในเวลาเช่นที่อยู่หรือรูปภาพดังนั้นหากฉันซ่อนผู้ชมกลุ่มผู้ใช้จะถูกเตะออกจากกลุ่มที่เขาเป็นเจ้าของทุกคน แก้ไข ฉันใช้รหัสด้านล่างเพื่อซ่อนฟิลด์เหล่านี้ในขณะที่ยังคงรักษาผู้ใช้อยู่ในกลุ่ม $variables['user_edit_about']['group_audience']= $temp['group_audience']; $variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">'; $variables['user_edit_about']['group_audience']['#suffix'] = '</div>'; ใครจะคิดวิธีที่ดีกว่าเพื่อให้บรรลุนี้ ขอบคุณ

1
วิธีใช้ #element_validate และ #value_callback ใน Drupal 8
ฉันได้ติดตามเอกสาร Form API อย่างเป็นทางการแล้ว แต่รหัสนี้ใช้ไม่ได้กับ Drupal 8: public function buildForm(array $form, FormStateInterface $form_state) { $form['upload'] = array( '#title' => t('Upload Images'), '#type' => 'managed_file', '#upload_location' => 'public://image_example_images/', '#element_validate' => array('file_generic_settings_max_filesize'), ); return $form; } private function file_generic_settings_max_filesize($element, &$form_state) { form_error($element, 'This is an error.'); } ฉันพยายาม remplace form_error () โดย …
9 8  forms 

2
คุณจะเปลี่ยนตำแหน่งของเอาต์พุต `form_set_error` ได้อย่างไร
มีวิธีใดบ้างใน Drupal 7 ที่จะเปลี่ยนตำแหน่งของเอาต์พุตของform_set_error? ในขณะนี้จะเรียกdrupal_set_messageว่าคิวใดที่ข้อผิดพลาดของแบบฟอร์มทั้งหมดที่ด้านบนของหน้าจอ สิ่งที่ฉันต้องการแทนคือให้แต่ละข้อความปรากฏใต้ช่องที่เหมาะสม หากไม่สามารถทำได้ฉันสามารถตั้งค่าสถานะแบบฟอร์มด้วยตนเองว่า "ไม่ถูกต้อง" ภายในMODULE_form_name_validate()ฟังก์ชันโดยไม่ใช้form_set_errorหรือไม่
9 7  forms 

6
ฉันจะเพิ่มคลาสในป้ายกำกับได้อย่างไร
ฉันต้องเพิ่มชื่อคลาสให้กับป้ายกำกับที่สร้างขึ้นโดย API ของ Drupal เช่นนี้: $form['name'] => array( '#type' => 'textfield', '#title' => 'Prénom' ); ถ้าฉันใช้สิ่งต่อไปนี้การ<textarea>ได้รับคลาส แต่ไม่ใช่ฉลาก $form['name']['#attributes']['class'] = array('myClass'); <label>ฉันกำลังมองหาบางสิ่งบางอย่างที่คล้ายกันที่จะเพิ่มระดับไป
9 7  forms 

4
ฉันจะพิมพ์ผลหลังจากส่งแบบฟอร์ม Drupal ได้อย่างไร
ฉันมีการตั้งค่าโมดูล Drupal ง่าย ๆ ซึ่งมีกล่องข้อความเดียว ฉันสามารถคืนสิ่งที่พิมพ์ในกล่องข้อความโดยใช้drupal_set_message(): function firstmodule_form1_submit($form, &$form_state) { drupal_set_message(t("The user is $username")); } อย่างไรก็ตามecho $username;จะไม่ทำงานสำหรับฉันไม่มีอะไรถูกพิมพ์ออกมา ฉันจะส่งคืนผลลัพธ์โดยdrupal_set_message()ไม่ใช้ได้อย่างไร
9 forms 


2
ต้องเพิ่มอักขระ HTML เพื่อเลือกรายการ
ฉันมีแบบฟอร์มที่ใช้ FAPI ที่มีรายการค่าสกุลเงินที่เลือกเป็นหนึ่งในอินพุต ฉันต้องสามารถเพิ่มอักขระ HTML เช่น€ $pound; ¥ ปัญหาคือ Drupal กำลังกรองอินพุตและไม่แสดงสัญลักษณ์ที่ต้องการ แต่แสดงรหัส html ตามที่แสดงด้านบน มีวิธีใดที่ Drupal จะไม่กรองรายการของฉัน?
9 forms  theming 

5
ดูตัวอย่างรูปภาพหลังจากอัพโหลดโดยใช้ Form API
ฉันอัปโหลดไฟล์ภาพโดยใช้managed_fileแบบฟอร์ม API แต่หลังจากอัปโหลดภาพแล้วไฟล์ดังกล่าวจะไม่ปรากฏเป็นภาพขนาดย่อข้างฟิลด์ สิ่งที่แสดงผลคือชื่อไฟล์ของรูปภาพที่มีลิงก์ไปยังรูปภาพและไอคอนขนาดเล็ก ฉันจะแสดงภาพขนาดย่อของภาพหลังจากอัพโหลดได้อย่างไร (เช่นภาพตัวอย่างจากฟิลด์แกนภาพ) นอกจากนี้ฉันจะแสดงภาพเริ่มต้นข้างๆมันได้อย่างไร (หากมีค่าเริ่มต้น) นี่คือรหัสของฉัน: $form['logo'] = array( '#title' => t('Logo'), '#type' => 'managed_file', '#required' => TRUE, '#default_value' => variable_get('logo', ''), '#upload_location' => 'public://', '#upload_validators' => array( 'file_validate_extensions' => array('gif png jpg jpeg'), 'file_validate_size' => array(0.3*1024*1024), )
9 7  forms  files 

5
ป้องกันการส่งแบบฟอร์มต่าง ๆ (ฝั่งเซิร์ฟเวอร์)
ฉันพบปัญหาที่ผู้ใช้สามารถส่งฟอร์มใด ๆ ที่สร้างขึ้นโดย Form API หลายครั้ง (การคลิกที่รวดเร็วทำให้เกิดคำขอหลายรายการ) ฉันได้ใส่โซลูชันพื้นฐานด้านไคลเอนต์ (javascript) ของการปิดใช้งานปุ่ม แต่ฉันอยากรู้ว่าวิธีที่ดีที่สุดในการป้องกันสถานการณ์นี้อยู่ที่ฝั่งเซิร์ฟเวอร์ มีวิธีแนะนำให้ใช้ระบบโทเค็นแบบฟอร์มของ Drupal เพื่อจัดการสิ่งนี้หรือไม่? โดยเฉพาะอย่างยิ่งโซลูชันแบบโกลบอล (เช่นการเพิ่มตัวตรวจสอบความถูกต้องที่กำหนดเองให้กับทุกรูปแบบโดยใช้ hook_form_alter ()) วิธีการของฉันจนเป็นเช่นนี้: function mymodule_form_alter(&$form, &$form_state, $form_id) { $form['#validate'][] = 'mymodule_form_validate'; } function mymodule_form_validate(&$form, &$form_state){ //initialize form array if (!isset($_SESSION['submitted_forms'])){ $_SESSION['submitted_forms'] = array(); } $form_token = $form_state['values']['form_token']; if ( isset($_SESSION['submitted_forms'][$form_token]) && $_SESSION['submitted_forms'][$form_token] = TRUE …
9 forms 

4
วิธีสร้างปุ่มแบบฟอร์มเรียกว่าจาวาสคริปต์เท่านั้น?
ฉันกำลังทดลองกับ JavaScript และฟอร์ม Drupal ขณะนี้ฉันกำลังพยายามสร้างปุ่มในรูปแบบการบริหารของโมดูลที่จะใช้ JavaScript เพื่อผนวกตัวเลือกในรายการที่เลือก ปัญหาที่ฉันพบคือเมื่อฉันคลิกปุ่ม JavaScript ของฉันถูกเรียกใช้ แต่การรีเฟรชฟอร์มทั้งหมด ฉันดูที่การอ้างอิง Forms API คิดว่ามีคุณลักษณะบางอย่างที่ฉันสามารถตั้งค่าบนปุ่มเพื่อหยุดการทำงาน แต่ไม่พบสิ่งใด มีวิธีใดที่ฉันสามารถหยุดปุ่มไม่ให้รีเฟรชหน้าเว็บหรือนี่เป็นจุดสิ้นสุดหรือไม่ $form['#attached']['js'] = array( drupal_get_path('module', 'test').'/js/test.js', ); $form['list'] = array( '#type' => 'select', '#options' => array(), '#attributes' => array( 'name' => 'sellist', ), '#size' => 4, ); $form['add_button'] = array( '#type' => 'button', '#value' …
9 7  forms  javascript 

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