Was ist die Alternative zu drupal_get_form('user_login')
. in Drupal 8?
Ich verwende den folgenden Code in theme_name.theme, aber es funktioniert nicht.
// 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');
sei denn ?Sie können ein Formular unter Formularordner erstellen. Und dann können Sie Ihr Formular überall aufrufen und den Parameter wie gezeigt übergeben.
Drupal 7 :
$form = drupal_get_form('form_id',$parameter);
Drupal 8 :
$form = \Drupal::formBuilder()->getForm('Drupal\custom_module\Form\CustomModuleForm',$parameter);
quelle
Es gibt zwei Möglichkeiten, ein Formular zurückzugeben (D8) oder zu rendern (D7). Das sind
\Drupal::formBuilder()->getForm
undDrupal::formBuilder()->buildForm
. Ich benutze\Drupal::formBuilder()->getForm
wie folgt.Verwenden Sie dies, wenn Sie keinen Parameter übergeben:
Verwenden Sie dies, wenn Sie einen Parameter übergeben:
Drupal 7-Äquivalent des oben genannten:
Prost. Lass es mich wissen, wenn es hilft.
quelle
Die Dokumentation erlaubt auch eine Instanz der Klasse. So
ist auch richtig.
quelle
Angenommen, das Folgende ist Ihre Formularklasse
Sie müssen zuerst eine neue Instanz aus Ihrer Formularklasse erstellen und diese an das getForm von formBuilder übergeben.
quelle
Wenn alles andere fehlschlägt, ist dies ein hinterhältiger Trick, indem Sie ein neues Formularstatusobjekt festlegen.
... dann können Sie in Ihrer Formularmethode buildForm ...
quelle