मार्ग का उपयोग करके फ़ॉर्म को लोड करने के दो तरीके हैं। आप या तो कॉलबैक को लोड कर सकते हैं जो एक फॉर्म लोड करता है और इसे बिल्ड ऐरे के हिस्से के रूप में लौटाता है, या आप डिफॉल्ट के तहत _form पैरामीटर सेट करके सीधे फॉर्म को लोड कर सकते हैं।
आप कार्यशील उदाहरणों को खोजने के लिए कोडबेस को खोज सकते हैं, उन्हें अपने mymodule.rout.yml में कॉपी कर सकते हैं, उन्हें अपनी आवश्यकताओं के अनुसार संपादित कर सकते हैं और फिर कैश का पुनर्निर्माण कर सकते हैं।
कॉलबैक से लोड हो रहा फॉर्म:
संपर्क मॉड्यूल में एक कार्यशील उदाहरण है:
/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+
फिर /core /modules/contact/src/Controller/ContactController.php में
आप कॉलबैक में फ़ॉर्म लोड करने का एक उदाहरण देख सकते हैं:
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;
}
मार्ग से सीधे लोड हो रहा है:
यदि आप फॉर्म को सीधे डिफ़ॉल्ट रूप से लोड करना चाहते हैं, तो /core/modules/shortcut/shortcut.rout.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+
इस स्थिति में, उपयोगकर्ता को प्रपत्र के लिए एक पैरामीटर के रूप में पारित किया जाता है, देखें /core/modules/shortcut/src/Form/SwitchShortcutSet.php
public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL) {