Quelle est l'alternative à drupal_get_form('user_login')
. dans Drupal 8?
J'utilise le code suivant dans theme_name.theme, mais cela ne fonctionne pas.
// 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');
ce soit?Vous pouvez créer un formulaire sous dossier de formulaire. Et puis vous pouvez appeler votre formulaire n'importe où et passer le paramètre comme indiqué.
Drupal 7 :
$form = drupal_get_form('form_id',$parameter);
Drupal 8 :
$form = \Drupal::formBuilder()->getForm('Drupal\custom_module\Form\CustomModuleForm',$parameter);
la source
Il existe deux options pour retourner (D8) ou rendre (D7) un formulaire. Ce sont
\Drupal::formBuilder()->getForm
etDrupal::formBuilder()->buildForm
. J'utilise\Drupal::formBuilder()->getForm
comme ci-dessous.Utilisez ceci si vous ne transmettez pas de paramètre:
Utilisez ceci si vous passez un paramètre:
Drupal 7 Équivalent de ce qui précède:
À votre santé. Faites-moi savoir si cela aide.
la source
La documentation autorise également une instance de la classe. Donc
est également correct.
la source
En supposant que ce qui suit est votre classe de formulaire
Vous devez d'abord créer une nouvelle instance à partir de votre classe de formulaire et la transmettre à getForm de formBuilder.
la source
Ok si tout le reste échoue, voici une astuce sournoise en définissant un nouvel objet d'état de formulaire.
... alors dans votre méthode de formulaire buildForm vous pouvez alors ...
la source