如何渲染特定的表单元素 Drupal 8

How to render specific form elements Drupal 8

我正在使用 Drupal 8 并想自定义表单元素的显示方式。具体来说,我不喜欢将不可编辑的填充文本字段显示为纯文本。我会把它显示为可编辑的文本字段(或者让文本看起来像是在不可编辑的文本字段中)。我查看了各种挂钩函数来尝试实现这一点,但似乎没有任何效果。

我认为解决此问题的最佳方法是,如果我可以自己单独呈现表单字段,然后创建一个 twig 文件来显示我希望显示的各个字段。这是我希望树枝字段看起来像的样子:

<div class="from">
  {{ form.mail }}
</div>

<div class="message">
  {{ form.message }}
</div>

<div class="actions">
  {{ form.actions }}
</div>

在您的 .module 文件中

function your_module_theme($existing, $type, $theme, $path) {
    return [
        'custom_theme' => [
            'variables' => [
                'form' => NULL
            ],
            'render element' => 'form',
        ]
    ];
}

在您的 CustomForm.php 文件中

public function buildForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildForm($form, $form_state);
    [...your fields ...]
    return $form
}

在您的自定义模块模板目录中

custom-theme.html.twig

{{ form.your_field }}