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

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

3
รับวัตถุโหนดใน hook_form_FORM_ID_alter
ติดตามคำถามนี้ แต่ฉันไม่มีชื่อเสียงพอที่จะขอคำชี้แจงในความคิดเห็น ฉันกำลังย้ายโมดูลที่สนับสนุนไปยัง Drupal 8 รหัสที่ถูก sugested ใน CR ที่กล่าวถึงข้างต้นและโพสต์ไม่ทำงาน: $node = $form_state->getFormObject()->getEntity(); ไม่มีการโหลดอะไรลงในตัวแปร $ node PHPStorm IDE ของฉันให้คำเตือนสำหรับ getEntity (): วิธีการ 'getEntity' ไม่พบในคลาส Drupal \ Core \ Form \ FormInterface น้อยลง ... ไม่พบวิธีการอ้างอิงในคลาสหัวเรื่อง นอกจากนี้ยังไม่ได้นำเสนอวิธีนี้สำหรับการทำให้โค้ดสมบูรณ์ ในการใช้งานทำให้ฉันอ้างอิง: use Drupal\Core\Entity; use Drupal\Core\Entity\EntityInterface; use Drupal\node\Entity\Node; use Drupal\Core\Render\Element;
13 8  forms 

6
วิธีสร้างเขตข้อมูลแบบอ่านอย่างเดียวโดยใช้ hook_form_alter
ฉันกำลังพยายามทำให้ฟิลด์ของฟอร์มโปรไฟล์ Drupal เป็นแบบอ่านอย่างเดียวในโหมดแก้ไข ฉันใช้รหัสต่อไปนี้ใน hook_alter $form[field_organisation_company_name][und][0]['#after_build'][]='_build_element_readonly'; function _build_element_readonly($element, &$form_state) { $element['value']['#attributes']['readonly'] = 'readonly'; return $element; } ใน UI ที่ยื่นแสดงเป็นแบบอ่านอย่างเดียว แต่ยังฉันสามารถเปลี่ยนค่าโดยใช้ firebug และบันทึก มีวิธีป้องกันพฤติกรรมนี้หรือไม่?
12 7  forms 

2
วิธีสร้างฟอร์มใหม่หลังจากการโทร AJAX
ฉันกำลังพยายามอนุญาตให้ผู้ใช้เลือกฟิลด์จำนวนมากแบบไดนามิกโดยใช้กล่องดร็อปดาวน์โดยใช้การโทร ajax แต่ดูเหมือนว่าฉันจะไม่ได้รับการโทร ajax เพื่อสร้างฟอร์มใหม่ในภายหลัง <?php class AJAXexample extends BlockBase { public function blockForm($form, FormStateInterface $form_state) { if (empty($form_state->getValue('number'))) { $form_state->setValue('number', 3); } $form['columnNum'] = [ '#title' => t('Number of Columns'), '#type' => 'select', '#options' => [ 1 => '1', 2 => '2', 3 => '3', 4 => '4', ], …
12 forms  8  ajax 

8
แก้ไขฟอร์มที่มีอยู่
เราเพิ่งเริ่มต้นด้วย Drupal 8 และเร็วมากที่เราพบปัญหาแรกของเรา ฉันจะเปลี่ยนรูปแบบที่มีอยู่ใน Drupal 8 ได้อย่างไร เราจำเป็นต้องเปลี่ยนวิธีการบันทึกสำหรับรูปแบบโหนดเพื่อทำการเปลี่ยนเส้นทางไปยังหน้าอื่น เราต้องการเปลี่ยนรูปแบบโหนดให้เป็นแบบฟอร์มหลายขั้นตอน หลังจากผู้ใช้สร้างเนื้อหาใหม่พวกเขาจะถูกเปลี่ยนเส้นทางไปยังแบบฟอร์มใหม่ (เราสร้าง) เพื่อรับข้อมูลเพิ่มเติม hook_entity_type_alter()เราแก้ปัญหาของเราดำเนินการ function mymodule_entity_type_alter(&$entity_info) { $handlers = $entity_info['node']->get('handlers'); $handlers['form']['default'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $handlers['form']['edit'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $entity_info['node']->set('handlers', $handlers); } จากนั้นเราสร้างคลาสฟอร์มใหม่ที่ขยายฟอร์มโหนดและเปลี่ยนวิธีการบันทึก class MyExtendedNodeForm extends NodeForm { public function save(array $form, FormStateInterface $form_state) { parent::save($form, $form_state); $node = $this->entity; $form_state->setRedirect('entity.regions.add_form', ['nid' => …
12 8  forms 

5
ประเภทฟิลด์ตัวเลขใน Form API
ฉันกำลังพยายามเพิ่มประเภทฟิลด์ "หมายเลข" ลงในแบบฟอร์มโดยใช้ FAPI: $form['phone_number']['areacode'] = array( '#type' => 'textfield', '#title' => '---', '#width' => '30%', '#align' => 'center', '#required' => true, '#maxlength' => 3 ); ฉันเปลี่ยน TYPE เป็น "number" และฟิลด์ไม่ได้ถูกสร้างเลย โมดูลตัวเลขถูกเปิดใช้งาน ฉันใช้ฟังก์ชั่นชุดรูปแบบต่อไปนี้: MYTHEME_form_element MYTHEME_textfield MYTHEME_container สิ่งใดที่อยู่เบื้องหลังฟิลด์นี้ไม่ปรากฏขึ้นเมื่อฉันใช้#type = numberหรือ#type = number_integerฯลฯ สิ่งนี้อาจเกี่ยวข้องกับมัน: การสร้างเขตข้อมูล Number (จำนวนเต็มและทศนิยม) ด้วยตนเองในรหัสสำหรับฟอร์มที่กำหนดเอง อย่างไรก็ตามฉันต้องการให้แสดงเป็น "number" ใน HTML …
12 forms 

2
ได้รับข้อผิดพลาด“ แบบฟอร์มล้าสมัยแล้ว”
ฉันมีรูปแบบโหนดหลายขั้นตอน ผ่านไปครึ่งทางแบบฟอร์มผ่านผู้ใช้กล่องโต้ตอบป๊อปอัพขอให้เข้าสู่ระบบหากพวกเขาไม่ได้เข้าสู่ระบบก่อน เมื่อล็อกอินสำเร็จเมื่อดำเนินการกับหน้าถัดไปของฟอร์มโหนดฉันได้รับข้อผิดพลาดในการตรวจสอบนี้: แบบฟอร์มล้าสมัยแล้ว คัดลอกงานที่ไม่ได้บันทึกในแบบฟอร์มด้านล่างจากนั้นโหลดหน้านี้ซ้ำ ฉันเข้าใจว่าเป็นเพราะdrupal_validation_form()ตรวจสอบ$form['#token']และ$form_state['values']['form_token']เหมือนกัน ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไรเนื่องจากเป็นกรณีการใช้งานพิเศษ (และไม่ใช่ของปลอมบางอย่างจากภายนอก) ด้านหน้ามีอินพุตอะไรบ้าง?
12 forms 

2
โหลดเนื้อหาโหนดลงใน lightbox2 (ไม่มีส่วนหัวและส่วนท้ายและบล็อกอื่น ๆ )
เป็นไปได้ไหมที่จะโหลดโหนด (จาก id) ลงใน lightbox 2 โดยไม่ต้องโหลดบล็อคเพิ่มเติมทั้งหมด? สิ่งที่โหนดมีการแสดง ฉันต้องการที่จะทำให้ป๊อปอัปบางอย่างในการเชื่อมโยงบางอย่างเพื่อให้บางโหนดที่จะแสดงภายใน .. ไม่มีการส่งจะทำในกรณีนี้ (ความคิดเห็นถูกปิดใช้งาน) อีกสิ่งที่ยอดเยี่ยมจะรวม webforms ใน lightbox อีกครั้งไม่มีส่วนหัว .. แต่ฉันเชื่อว่ามันซับซ้อนกว่าเพราะมันคือการส่งแบบฟอร์ม ... ต้องใช้ ajax

3
วิธีทำให้ cache_form เล็ก
ฉันสังเกตเห็นใน mysql ว่า cache_form.MYD ตารางเป็น 14GB ทำไมมันใหญ่ขึ้นเรื่อย ๆ ปลอดภัยไหมที่จะล้างมัน? และฉันจะหลีกเลี่ยงเหตุการณ์นี้ในอนาคตได้อย่างไร ขอบคุณ


1
องค์ประกอบรูปแบบแนวนอน
ฉันอธิบายแบบฟอร์มแล้ว แต่องค์ประกอบทุกอย่างมีอยู่ภายใต้องค์ประกอบก่อนหน้า ฉันต้องอธิบายรูปแบบที่องค์ประกอบทั้งหมดจะถูกวางในแนวนอน แต่ไม่ใช่แนวตั้ง นี่คือแบบฟอร์มของฉัน: function contact_register_form($form, &$form_state) { $form['description'] = array( '#type' => 'item', '#title' => t('Sign up to be notified when your community launches:'), ); $form['email'] = array( '#type' => 'textfield', '#title' => t('Email'), ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Add me', ); return $form; …
12 forms 


6
จะตรวจสอบและส่งแบบฟอร์มโดยใช้ AJAX ได้อย่างไร
ฉันสร้างฟอร์มเว็บโดยใช้ Form API ฉันใช้#AJAXตัวเลือกฟิลด์เพื่อเพิ่มการตรวจสอบ AJAX ให้กับแต่ละฟิลด์ เป็นไปได้หรือไม่ที่จะตรวจสอบและส่งแบบฟอร์มโดยใช้ AJAX โดยไม่ต้องโหลดหน้าซ้ำ หากการตรวจสอบล้มเหลวฉันต้องการแสดงข้อความแสดงข้อผิดพลาดและหากการตรวจสอบสำเร็จแล้วฉันต้องการแสดงข้อความ (นึกคิดใน lightbox) และตั้งค่าเขตข้อมูลแบบฟอร์ม รหัสของฉัน: $form['name'] = array( '#type' => 'textfield', '#title' => t('Name'), '#default_value' => '', '#maxlength' => '128', '#required' => TRUE, '#ajax' => array( 'callback' => '_validate_name', 'wrapper' => 'name-error-icon-container', 'method' => 'html', 'effect' => 'none', 'progress' => array( …
12 7  forms  ajax 

7
การสร้าง <button type =“ submit”> ด้วยฟอร์ม API
ฉันมีรูปแบบชุดรูปแบบหนักเพื่อรวมซึ่งมีโครงสร้างที่แสดงด้านล่าง ฉันเป็นเพียงแค่ส่วนใหญ่ยกเว้นการส่ง &lt;form action="#"&gt; &lt;fieldset&gt; &lt;legend&gt;Authentification&lt;/legend&gt; &lt;label for="email"&gt;Courriel*&lt;/label&gt; &lt;input type="text" name="email" id="email"&gt; &lt;label for="password"&gt;Mot de passe*&lt;/label&gt; &lt;input type="password" name="password" id="password" class="last"&gt; &lt;a href="#" title="Mot de passe oublié?" class="clearfix"&gt;Forgot password?&lt;/a&gt; &lt;button type="submit" class="clearfix"&gt;&lt;span&gt;Login&lt;/span&gt;&lt;/button&gt; &lt;/fieldset&gt; &lt;/form&gt; ฉันลองชุดค่าผสมหลายแบบปรากฎว่า button_type ไม่มีผลกับแกนหลัก ดังนั้นฉันจึงใช้แฮ็คนี้หวังว่ามันจะแก้ไขปัญหาของฉัน อนิจจามันเปลี่ยนเฉพาะคุณลักษณะ 'type' (ชัด) และไม่ใช่องค์ประกอบ ประเภทปุ่มสามารถเก็บองค์ประกอบอื่น ๆ ได้ในกรณีนี้จำเป็นต้องมีการขยายเพื่อเก็บภาพพื้นหลังโดยจะต้องอยู่ในช่วงการยืดเพื่อยืดข้อความในปุ่มนั้นเป็นแบบไดนามิก ไม่มีใครมีเงื่อนงำว่าฉันสามารถสร้างมาร์กอัปบรรทัดต่อไปนี้โดยใช้แบบฟอร์ม API ได้อย่างไร &lt;button type="submit" …
12 forms 

2
Webform - ส่งค่าจาก Drupal 7 จากไปยัง URL ภายนอก
ฉันเป็นมือใหม่ที่ประกาศตัวเองถึงการสร้างแบบฟอร์มใน Drupal ฉันมีแบบฟอร์มที่โฮสต์บนเว็บไซต์ Drupal 7 (ใช้โมดูล webform) และจำเป็นต้องส่งค่าฟอร์มไปยัง URL ภายนอก ฉันได้ทำการค้นคว้ามาระยะหนึ่งแล้วและเขียนโมดูลที่กำหนดเองที่ใช้โมดูลเว็บฟอร์มเพื่อส่งภายนอกโดยใช้ hook_form_alter และส่งตัวจัดการ / ฟังก์ชั่นที่กำหนดเอง (รหัสวางด้านล่าง) ฉันใช้หน้าต่อไปนี้เป็นแนวทาง แต่ฉันไม่สามารถรับแบบฟอร์มการทำงาน: https://drupal.org/node/1357136 การใช้ drupal_http_post () เพื่อส่งไปยังไซต์ภายนอก: ฉันกำลังทำอะไร ไม่ถูกต้อง? ใครช่วยบอกให้ฉันรู้ถ้าฉันถูกทาง? คำแนะนำใด ๆ จะเป็นประโยชน์! &lt;?php function webform_extra_form_alter(&amp;$form, &amp;$form_state, $form_id) { //only want form with nid 1171 to submit externally //Note that "webform_client_form_1171" means modify the …
11 7  hooks  webforms  forms 

3
วิธีตั้งค่าความยาวสูงสุดสำหรับฟิลด์ textarea ในแบบฟอร์มการติดต่อ
ฉันต้องการ จำกัด ข้อความ textarea ของแบบฟอร์มการติดต่อหลักของโมดูลให้มีจำนวนอักขระที่แน่นอน นี่คือข้อเท็จจริง API แบบฟอร์มไม่อนุญาตให้หนึ่งตั้งค่าความยาวสูงสุดในประเภทฟิลด์ textarea [ในขณะที่ HTML ธรรมดา] MAXLENGTHโมดูลไม่ได้ช่วยให้คุณสามารถตั้งค่าจริงความยาวสูงสุด ได้รับความยาวสูงสุดจากความยาวสูงสุดของฟิลด์ที่กำหนดไว้ในส่วนจัดการประเภทเนื้อหาแต่ละประเภท การสร้างประเภทองค์ประกอบรูปแบบใหม่โดยใช้ hook_element_info ยังไม่รับประกันฉันสามารถเพิ่มลง#maxlengthใน textarea นอกจากนี้หากฉันประสบความสำเร็จฉันต้องเปลี่ยนโมดูลรูปแบบการติดต่ออีกครั้งเพื่อแทนที่ฟิลด์ข้อความ textarea จริงด้วยเหมือง ดังนั้นฉันสามารถแก้ไขได้อย่างง่ายดายและตรงไปตรงมา? เป็นความคิดที่ดีที่สุดในการเปลี่ยนแปลงฟิลด์ textarea ทั้งหมดในเว็บไซต์คืออะไร?
11 forms  emails 

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