รับแบบฟอร์มโดยทางโปรแกรมใน Drupal 8


12

เอกสารฯ :

อาร์กิวเมนต์ที่ส่งผ่านไปยังเมธอด getForm () เป็นชื่อของคลาสที่กำหนดแบบฟอร์มของคุณและเป็นการใช้งาน \ Drupal \ Core \ Form \ FormBuilderInterface

ฉันจะหาชื่อของชั้นที่กำหนดในแบบฟอร์มความคิดเห็นเว็บไซต์ให้บริการโดยหลักติดต่อโมดูล (ID รูปแบบคือ: feedback_contact_message_form)

เมื่อฉันdpm()แบบฟอร์มฉันจะเห็นว่ามีคลาสที่กำหนดไว้:

$input array(30)
  '#attributes' => array(1)
    'class' => array(3)
      string(29) "feedback-contact-message-form"
      string(20) "contact-message-form"
      string(12) "contact-form"

ฉันลองรูปแบบต่าง ๆ ของสิ่งนี้เป็นพารามิเตอร์เพื่อส่งไปที่:

\Drupal::formBuilder()->getForm();

แต่ไม่มีโชค ขอบคุณ


1
Drupal\contact\ContactFormEditFormรูปแบบการติดต่อเป็นกิจการดังนั้นฉันคิดว่าพวกเขาทั้งหมดมาจาก ไม่แน่ใจว่ามีวิธีที่ง่ายในการค้นหาว่าถ้าคุณรู้ว่ามันเป็นรูปแบบเอนทิตี วิธีที่ดีที่สุดอาจจะมีการดูใต้ของโมดูลโฟลเดอร์สำหรับไฟล์ที่มีชื่อปลายด้วยsrc Form.phpฉันคิดว่านั่นเป็นการประชุมที่ปลอดภัยที่จะต้องปฏิบัติตาม
ไคลฟ์

คำตอบของคำถามของฉันจะไม่ช่วย Berdir? drupal.stackexchange.com/questions/146617/…
alexej_d

ขอบคุณ แต่ฉันไม่ทำตามคำตอบของ Berdir ฉันได้เพิ่มปลั๊กอินบล็อกของฉันด้านล่างคำตอบของฉัน - เพิ่มสองบรรทัดแรกจากตัวอย่างรหัสของคุณ ฉันจะไปจากที่นี่ที่ไหน ขอบคุณ
dbj44

คำตอบ:


13

แสดงผลภายในปลั๊กอินบล็อก:

class myModule extends BlockBase {
  public function build() {

    $default_form = \Drupal::config('contact.settings')->get('default_form');
    $entity = \Drupal::entityManager()->getStorage('contact_form')->load($default_form);

    $message = \Drupal::entityManager()
      ->getStorage('contact_message')
      ->create(array(
        'contact_form' => $entity->id(),
      ));

    $form = \Drupal::service('entity.form_builder')->getForm($message);

    return $form;
  }
}

ฉันมีปัญหาเดียวกัน เราแบ่งปันบันทึกและแชทกันได้ไหม สิ่งที่ฉันต้องทำคือเพียงแค่ใช้แบบฟอร์มจากที่ใดก็ได้บนไซต์และส่งออกไปที่อื่นภายในฟิลด์ข้อความที่เปิดใช้งาน PHP
Patoshi パトシ

ฉันจะส่งแบบฟอร์มเอนทิตีนี้โดยทางโปรแกรมได้อย่างไร
Unnikrishnan

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