Ich habe mein Formular, aber jedes untergeordnete Element des Elements "#markup" wird beim Rendern des Formulars nicht angezeigt.
$form['html'] = array(
'#type' => 'markup',
'#markup' => '<h2>My Heading</h2>',
'#tree' => true,
);
$form['html']['element'] = array(
'#type' => 'textfield',
'#title' => 'Foo',
);
In diesem Beispiel wird das Formularfeld "Element" nicht gerendert.
Ist das ein Drupal-Fehler oder muss ich etwas Bestimmtes tun?
Antworten:
Die Nichtverwendung von "#tree" mit einem "#markup" -Element scheint ein Fehler von Drupal zu sein, da auf der Referenzseite der Formular-API angegeben wird, dass "#tree" vom "#markup" -Element unterstützt wird .
Um dieses Problem zu umgehen, können Sie auch die Eigenschaft "#prefix" wie im folgenden Code verwenden:
Wenn es nicht wie erwartet gerendert wird, können Sie einfach "#tree" aus Ihrem Code entfernen, was nicht erforderlich zu sein scheint, wenn Sie das
<h2>My Heading</h2>
Tag nur vor den Formularfeldern rendern möchten . Die Formular-API rendert die Elemente in der Reihenfolge, in der sie im Array angezeigt werden. Wenn Sie die Reihenfolge ändern möchten, können Sie die Eigenschaft " #weight " verwenden.quelle
Genauer gesagt werden die
#markup
untergeordneten Elemente von Typelementen nicht gerendert. Sie werden jedoch zu Formularzwecken verarbeitet.quelle