Drupal 8 में प्रोग्राम करें


12

प्रलेखन कहता है:

GetForm () पद्धति के लिए दिया गया तर्क उस वर्ग का नाम है जो आपके फॉर्म को परिभाषित करता है और यह \ Drupal \ Core \ Form \ FormBuilderInterface का कार्यान्वयन है।

मुझे कोर संपर्क मॉड्यूल द्वारा प्रदान की गई वेबसाइट फीडबैक फॉर्म को परिभाषित करने वाले वर्ग का नाम कैसे पता चलेगा (फॉर्म आईडी है:) ।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। मुझे लगता है कि एक सुरक्षित का पालन करना है
क्लाइव

क्या मेरे सवाल में बर्दिर का जवाब मदद नहीं करेगा? drupal.stackexchange.com/questions/146617/…
alexej_d

धन्यवाद, लेकिन मैं बर्दीर के उत्तर का पालन नहीं करता। मैंने अपने उत्तर के नीचे अपना ब्लॉक प्लगइन जोड़ दिया है - अपने कोड नमूने से पहली दो पंक्तियाँ जोड़ रहा हूँ। मैं यहाँ से कहाँ जाऊँ? धन्यवाद।
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 सक्षम पाठ क्षेत्र के अंदर कहीं और आउटपुट दें।
पाटोशी at ト

मैं इस इकाई को प्रोग्राम रूप से कैसे सबमिट कर सकता हूं?
उन्नीकृष्णन

यदि फार्म को aaax कार्रवाई के लिए #after_build पर कार्रवाई करने की आवश्यकता है, तो क्या हमारे पास कोई समाधान है?
allabakash.g
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.