Jaka jest alternatywa dla drupal_get_form('user_login')
. w Drupal 8?
Korzystam z następującego kodu w theme_name.theme, ale to nie działa.
// Include namespace for userLoginForm.
use \Drupal\Core\core\modules\user\src\Form;
function MYTHEMENAME_preprocess_page(&$variables) {
$form = UserLoginForm::create();
}
$variables['foo_form'] = \Drupal::formBuilder()->getForm('user_login');
tak?Możesz utworzyć formularz w folderze formularzy. Następnie możesz zadzwonić do swojego formularza w dowolnym miejscu i przekazać parametry, jak pokazano.
Drupal 7 :
$form = drupal_get_form('form_id',$parameter);
Drupal 8 :
$form = \Drupal::formBuilder()->getForm('Drupal\custom_module\Form\CustomModuleForm',$parameter);
źródło
Istnieją dwie opcje zwrotu (D8) lub renderowania (D7) formularza. To są
\Drupal::formBuilder()->getForm
iDrupal::formBuilder()->buildForm
. Używam\Drupal::formBuilder()->getForm
jak poniżej.Użyj tego, jeśli nie przekazujesz parametru:
Użyj tego, jeśli przekazujesz parametr:
Drupal 7 Odpowiednik powyższego:
Twoje zdrowie. Daj mi znać, jeśli to pomoże.
źródło
Dokumentacja pozwala również na wystąpienie klasy. Więc
jest również poprawne.
źródło
Zakładając, że poniżej jest twoja klasa formy
Najpierw musisz utworzyć nową instancję z klasy formularza i przekazać ją do getForm formBuilder.
źródło
Ok, jeśli wszystko inne zawiedzie tutaj, to podstępna sztuczka polegająca na ustawieniu nowego obiektu stanu formularza.
... następnie w formularzu metody buildForm możesz następnie ...
źródło