Bir yolu kullanarak bir form yüklemenin iki yolu vardır. Bir formu yükleyen ve derleme dizisinin bir parçası olarak döndüren bir geri çağrı yükleyebilir veya _form parametresini varsayılanlar altında ayarlayarak formu doğrudan yükleyebilirsiniz.
Çalışma örneklerini bulmak için kod tabanında arama yapabilir, bunları mymodule.routing.yml dosyasına kopyalayabilir, ihtiyaçlarınıza göre düzenleyebilir ve ardından önbelleği yeniden oluşturabilirsiniz.
Geri aramadan form yükleniyor:
Kontak modülünde çalışan bir örnek var:
/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+
Ardından /core/modules/contact/src/Controller/ContactController.php
geri aramaya nasıl form yükleneceği ile ilgili bir örnek görebilirsiniz:
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;
}
Formu doğrudan rotadan yükleme:
Formu doğrudan _form varsayılanını kullanarak yüklemek isterseniz, /core/modules/shortcut/shortcut.routing.yml adresindeki kısayol modülünde bir örnek vardır.
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+
Bu durumda, kullanıcı forma parametre olarak iletilir, bkz. /Core/modules/shortcut/src/Form/SwitchShortcutSet.php
public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL) {