フォームを作成するためのカスタムモジュールを作成しました。今、私はテーマにこだわっています。私の会社は政府の一部であり、ブランドが事前設定されているため、フォームの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
)
)
);
}
form-element、fieldset-element、form-elementsに['#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)
デフォルトのthemefunctionsコードを使用しても機能しないため、これらの関数のコードは含めていません。したがって、私はそれらが問題の原因ではないと思います。
フォームはと呼ばれます
//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;
フォームのテーマを設定する同様の「複雑な」例は見つかりませんでしたが、本やオンライン検索から前者をつなぎ合わせました。
うまくいけば、誰かがこの問題に対する答えを持っています(私が犯した間違いを指摘してください)。
ジェロエンさん、ご挨拶