มีสองวิธีในการโหลดแบบฟอร์มโดยใช้เส้นทาง คุณสามารถโหลดการเรียกกลับที่โหลดแบบฟอร์มและส่งกลับเป็นส่วนหนึ่งของอาร์เรย์การสร้างหรือคุณสามารถโหลดแบบฟอร์มโดยตรงโดยการตั้งค่าพารามิเตอร์ _form ภายใต้ค่าเริ่มต้น
คุณสามารถค้นหา codebase เพื่อค้นหาตัวอย่างการทำงานคัดลอกลงใน mymodule.routing.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;
}
กำลังโหลดแบบฟอร์มโดยตรงจากเส้นทาง:
หากคุณต้องการโหลดแบบฟอร์มโดยตรงโดยใช้ค่าเริ่มต้น _form มีตัวอย่างในโมดูลทางลัดที่ /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+
ในกรณีนี้ผู้ใช้จะถูกส่งผ่านเป็นพารามิเตอร์ไปยังแบบฟอร์มดู /core/modules/shortcut/src/Form/SwitchShortcutSet.php
public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL) {