因此,经过一天的全部文档记录后自己解决了问题,这里是解决方案,因为我将把我的问题恢复到早期的修订版,以防万一有人需要。
因此,鉴于上述问题中的 sn-p,我在 buildForm() 函数中声明了变量
public function buildForm(array $form, FormStateInterface $form_state) {
$field_value = '';
if ($node = \Drupal::routeMatch()->getParameter('node')) {
$field_value = $node->field_name->value;
}
$form['field_value'] = array(
'#type' => 'value',
'#value' => $field_value,
);
// And then you add the definition for other form items and submit button
}
对于使用该值发送邮件,您可以使用$form_state 检索该值,如下所示:
public function submitForm(array &$form, FormStateInterface $form_state) {
$module = 'your_module_name';
$key = 'any_key_you_would_like';
$to = 'receiver@email.address';
$langcode = 'en';
$params = array(
'body' => 'Node is booked',
'subject' => $form_state->getValue('field_value'),
);
$mailer = \Drupal::service('plugin.manager.mail');
$mailer->mail($module, $key, $to, $langcode, $params, NULL, TRUE);
}
从节点获取某些值非常棘手,例如使用$node->getTitle() 而不是$node->field_name->value 的节点标题,因此您想使用 Drupal 8 的 Devel + Kint 模块检查您的字段以了解哪些属性和方法使用。