Il existe deux façons de charger un formulaire à l'aide d'un itinéraire. Vous pouvez soit charger un rappel qui charge un formulaire et le renvoie dans le cadre du tableau de génération, soit charger directement le formulaire en définissant le paramètre _form sous les valeurs par défaut.
Vous pouvez rechercher la base de code pour trouver des exemples de travail, les copier dans votre mymodule.routing.yml, les modifier selon vos besoins, puis reconstruire le cache.
Chargement du formulaire depuis le rappel:
Il y a un exemple de travail dans le module de contact:
/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+
Puis dans /core/modules/contact/src/Controller/ContactController.php
vous pouvez voir un exemple de chargement d'un formulaire dans le rappel:
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;
}
Formulaire de chargement directement depuis l'itinéraire:
Si vous souhaitez charger le formulaire directement en utilisant le _form par défaut, il y a un exemple dans le module de raccourci à /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+
Dans ce cas, l'utilisateur est transmis en tant que paramètre au formulaire, voir /core/modules/shortcut/src/Form/SwitchShortcutSet.php
public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL) {