Puncte:-2

Pot folosi două formulare diferite într-un singur modul?

drapel cn

Sunt nou în Drupal 8 și mă întrebam dacă pot folosi două formulare care se află în folderul Form (mymodule/src/Form/). Numele formularelor mele sunt FormOne.php și FormTwo.php.

Pot afișa și utiliza FormOne.php doar prin întregul meu modul.

Am cercetat și nu am găsit un răspuns.

Mă puteți ajuta la afișarea celui de-al doilea formular?

Puncte:2
drapel ru

Puteți crea un formular personalizat în MyCustomFormA.php

<?php

spațiu de nume Drupal\MY_MODULE\Form;

utilizați Drupal\Core\Form\FormBase;
utilizați Drupal\Core\Form\FormStateInterface;

/**
 * Clasa MyCustomFormA.
 */
clasa MyCustomFormA extinde FormBase {

  /**
   * {@inheritdoc}
   */
  funcția publică getFormId() {
    returnează „my_custom_form_a”;
  }
.....
}

În același mod, puteți crea un alt formular MyCustomFormB.php

<?php

spațiu de nume Drupal\MY_MODULE\Form;

utilizați Drupal\Core\Form\FormBase;
utilizați Drupal\Core\Form\FormStateInterface;

/**
 * Clasa MyCustomFormB.
 */
clasa MyCustomFormB extinde FormBase {

  /**
   * {@inheritdoc}
   */
  funcția publică getFormId() {
    returnează „my_custom_form_b”;
  }
....
}

În dumneavoastră MY_MODULE.routing.yml

MY_MODULE.my_custom_form_a:
  calea: „/MY_MODULE/my_custom_form_a”
  implicite:
    _form: „\Drupal\MY_MODULE\Form\MyCustomFormA”
    _title: „Formularul meu personalizat A”
  cerinte:
    _permission: „accesează conținut”
MY_MODULE.my_custom_form_b:
  calea: „/MY_MODULE/my_custom_form_b”
  implicite:
    _form: „\Drupal\MY_MODULE\Form\MyCustomFormB”
    _title: „Formularul meu personalizat B”

  cerinte:
    _permission: „accesează conținut”
Jeirod avatar
drapel cn
Mulțumesc pentru răspuns, @Razeem. Pentru `MyCustomFormB.php`, ar trebui să-l declar și pe routing.yml?
Razeem Ahmad avatar
drapel ru
Dacă doriți să îl afișați într-o anumită pagină, atunci da
Jeirod avatar
drapel cn
aveți nevoie de „cerințe” în fiecare formular. Îmi dă o „EROARE HTTP 500”. Am încercat și eu să șterg memoria cache și îmi dă aceeași eroare.
Razeem Ahmad avatar
drapel ru
da, puteți adăuga și asta
Jeirod avatar
drapel cn
Mulțumesc mult @Razeem
Razeem Ahmad avatar
drapel ru
Bun venit @JeirodAbogado.
Puncte:2
drapel de

Da, puteți defini câte forme într-un modul aveți nevoie.

Dacă doriți să includeți două formulare într-o singură pagină, puteți face acest lucru utilizând generatorul de formulare din controler pentru a apela ambele formulare și a crea o matrice de randare.

În loc de a folosi _formă în dumneavoastră *.routing.yml fișier, ați folosi în schimb _controlor, și definiți un apel invers de controler, mai degrabă decât un apel invers de formular. Controlerul tău ar fi așa ceva:

clasa ExampleController extinde Drupal\Core\Controller\ControllerBase {

  funcția examplePageCallback() {
    // Notă - ar trebui să utilizați injecția de dependență pentru a injecta acest serviciu, 
    // mai degrabă decât această metodă.
    $form_builder = \Drupal::service('form_builder');

    $retur [
      'form_a' => $form_builder->getForm('Drupal\[MODULE]\Form\FormA'),
      'form_b' => $form_builder->getForm('Drupal\[MODULE]\Form\FormB'),
    ];
  }
}
Jeirod avatar
drapel cn
Mulțumesc pentru răspuns, @Jaypan. Am pus această întrebare pentru că am observat că FormOne poate fi folosit și afișat doar. Se pare că nu pot folosi și afișa FormTwo. Ar trebui să declar fiecare formular în routing.yml?
Jaypan avatar
drapel de
Dacă doriți ca formularul să fie accesibil la o rută, da, acesta este o modalitate prin care puteți utiliza al doilea formular.
Jeirod avatar
drapel cn
Este posibil să adăugați ambele rute în routing.yml? `mymodule.display_form:` ` calea: '/mymodule'` ` implicite:` ` _form: '\Drupal\mymodule\Form\FormOne'` ` _form: '\Drupal\mymodule\Form\FormTwo'`
Kevin avatar
drapel in
Trebuie să construiți un controler care returnează o matrice de randare care conține ambele forme în acest caz.
Jaypan avatar
drapel de
Mi-am actualizat răspunsul.
Jeirod avatar
drapel cn
@Jaypan, mulțumesc pentru actualizare. Plănuiesc să folosesc fiecare formular într-o pagină separată. Este si posibil?
Jaypan avatar
drapel de
Da, în acest caz, ați folosi metoda pe care Razeem a postat-o ​​ca răspuns. Răspunsul lui este cum să aveți pagini separate pentru fiecare formular. Răspunsul meu este cum să ai două formulare pe o singură pagină.
Jeirod avatar
drapel cn
Multumesc pentru solutie. @Jaypan
Jaypan avatar
drapel de
Ar trebui să marcați răspunsul lui ca fiind corect, dar să ne votați amândurora pentru răspunsurile noastre. Asta e obiceiul aici :) Bine ai venit.
Jeirod avatar
drapel cn
Sigur @Jaypan, ambele răspunsuri sunt utile. Mulțumesc mult.
Jeirod avatar
drapel cn
Mulțumesc și @Kevin pentru informații suplimentare

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.