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
      )
    )
  );
}

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;

フォームのテーマを設定する同様の「複雑な」例は見つかりませんでしたが、本やオンライン検索から前者をつなぎ合わせました。

うまくいけば、誰かがこの問題に対する答えを持っています(私が犯した間違いを指摘してください)。

ジェロエンさん、ご挨拶

4

0 に答える 0