Es gibt zwei Möglichkeiten, ein Formular über eine Route zu laden. Sie können entweder einen Rückruf laden, der ein Formular lädt und als Teil des Build-Arrays zurückgibt, oder Sie können das Formular direkt laden, indem Sie den Parameter _form unter den Standardeinstellungen festlegen.
Sie können die Codebasis durchsuchen, um Arbeitsbeispiele zu finden, sie in Ihre Datei mymodule.routing.yml kopieren, sie nach Ihren Wünschen bearbeiten und dann den Cache neu erstellen.
Formular vom Rückruf laden:
Im Kontaktmodul gibt es ein funktionierendes Beispiel:
/core/modules/contact/contact.routing.yml
entity.user.contact_form:
path: '/user/{user}/contact'
defaults:
_title: 'Contact'
_controller: '\Drupal\contact\Controller\ContactController::contactPersonalPage'
requirements:
_access_contact_personal_tab: 'TRUE'
user: \d+
Dann in /core/modules/contact/src/Controller/ContactController.php
Im Rückruf sehen Sie ein Beispiel zum Laden eines Formulars:
public function contactPersonalPage(UserInterface $user) {
// Do not continue if the user does not have an email address configured.
if (!$user->getEmail()) {
throw new NotFoundHttpException();
}
$message = $this->entityManager()->getStorage('contact_message')->create(array(
'contact_form' => 'personal',
'recipient' => $user->id(),
));
$form = $this->entityFormBuilder()->getForm($message);
$form['#title'] = $this->t('Contact @username', array('@username' => $user->getDisplayName()));
$form['#cache']['contexts'][] = 'user.permissions';
return $form;
}
Formular direkt von der Route laden:
Wenn Sie das Formular direkt mit der Standardeinstellung _form laden möchten, finden Sie ein Beispiel im Verknüpfungsmodul unter /core/modules/shortcut/shortcut.routing.yml
shortcut.set_switch:
path: '/user/{user}/shortcuts'
defaults:
_form: 'Drupal\shortcut\Form\SwitchShortcutSet'
_title: 'Shortcuts'
requirements:
_custom_access: 'Drupal\shortcut\Form\SwitchShortcutSet::checkAccess'
options:
_admin_route: TRUE
user: \d+
In diesem Fall wird der Benutzer als Parameter an das Formular übergeben (siehe /core/modules/shortcut/src/Form/SwitchShortcutSet.php)
public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL) {