경로를 사용하여 양식을로드하는 방법에는 두 가지가 있습니다. 폼을로드하고 빌드 배열의 일부로 반환하는 콜백을로드하거나 기본값에서 _form 매개 변수를 설정하여 폼을 직접로드 할 수 있습니다.
코드베이스를 검색하여 작업 예제를 찾아 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) {