我已经构建了一个自定义模块来创建一个表单。现在我被困在主题上。我已经有一个表单的 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;
我还没有找到类似的主题化表单的“复杂”示例,但我从书籍和在线搜索中将前者拼凑在一起。
希望有人能解决这个问题(指出我犯的错误)。
问候杰伦