2

我已经构建了一个自定义模块来创建一个表单。现在我被困在主题上。我已经有一个表单的 CSS 样式表,因为我的公司是政府的一部分,他们有一个预设的品牌。所以我想改变 Drupal 的默认表单主题函数使用的 HTML,从而实现正确的样式。

但只有表单的表单标签被渲染。不呈现字段集和元素。当主题功能被删除时,默认主题会启动并且表单会正常呈现(但当然没有请求的主题)。

到目前为止我已经尝试过:

添加了一个 hook_theme 函数来添加主题功能

function publicatieaanvraagformulier_theme() {
  return array(
    'publicatieaanvraagformulier_form' => array(
   'arguments' => array("element" => NULL)  
    ),
    'publicatieaanvraagformulier_fieldset' => array(
      'arguments' => array("element" => NULL)
    ),
    'publicatieaanvraagformulier_form_element' => array(
      'arguments' => array(
        "element" => NULL,
        "value" => NULL
      )
    )
  );
}

在表单元素、字段集元素和表单元素中添加了 ['#theme']

$form['#theme'] = "publicatieaanvraagformulier_form";
$form['groep'] = array(
  '#title' => t("Please fill in your details"),
  '#type' => "fieldset",
  '#theme' => "publicatieaanvraagformulier_fieldset"
);
$form['groep']['organisatie'] = array(
  '#title' => t("Organization"),
  '#type' => "textfield",
  '#attributes' => array("class" => "text"),
  '#theme' => "publicatieaanvraagformulier_form_element"
);

在 form.inc 中默认的基础上添加了实际的主题功能

function theme_publicatieaanvraagformulier_form($element) {
function theme_publicatieaanvraagformulier_fieldset($element)
function theme_publicatieaanvraagformulier_form_element($element, $value)

我没有包含这些函数的代码,因为即使使用默认的主题函数代码,它们也不起作用。因此,我认为它们不是问题的根源。

该表格称为

//Get the form
$form = drupal_get_form('publicatieaanvraagformulier');

//Add messages
$errors = form_get_errors();
if (!empty($errors)) {
  $output .= theme("status_messages","error");
} 

//Show form
$output .= $form;
return $output;

我还没有找到类似的主题化表单的“复杂”示例,但我从书籍和在线搜索中将前者拼凑在一起。

希望有人能解决这个问题(指出我犯的错误)。

问候杰伦

4

0 回答 0