Beim Lesen der Ajax-Framework-Dokumentation bin ich auf eine Erwähnung der #ajax
Eigenschaft gestoßen. Ich weiß vom Stöbern durch den Code, dass es andere dieser Eigenschaften mit Rautezeichen vor ihnen gibt. Was bedeutet das Rautezeichen? Worum geht es bei diesen Eigenschaften?
22
Antworten:
Dies hat mit Render-Arrays im Allgemeinen zu tun , es ist nicht nur AJAX-spezifisch oder die Formular-API (obwohl die Formular-API Render-Arrays ausschließlich zum Aufbau des Inhalts verwendet).
Vereinfacht ausgedrückt werden Array-Schlüssel in einem Render-Array ohne ein
#
vor dem Namen als untergeordnete Elemente des Render-Arrays betrachtet und anschließend selbst (rekursiv) gerendert.Diejenigen mit einem
#
vor ihnen werden als Metadaten / Variablen für das Render-Array angesehen, die nach Bedarf verwendet werden können, und werden nicht selbst gerendert.In den Render-Array-Dokumenten (oben verlinkt) ist dies kurz und bündig formuliert:
Die
#
Schlüssel sind die "Hinweise", von denen der obige Absatz spricht, die Nichtschlüssel#
sind die verschachtelten Daten.Ich würde empfehlen, diese Seite gründlich zu lesen, sie enträtselt das gesamte Render-Array und liefert Codebeispiele.
Es gibt auch eine weitere kleine Erklärung / ein Codebeispiel auf der Themeseite, die nützlich sein könnten.
Render-Arrays werden in Drupal überall verwendet (Formulare, Themen, allgemeine Markups usw.). Wenn Sie sich also gut mit ihnen auskennen, können Sie die zukünftige Drupal-Entwicklung erheblich unterstützen.
quelle
Die Formular-API verwendet ein # vor allen Eigenschaften, um zwischen Eigenschaften und untergeordneten Elementen zu unterscheiden. Im folgenden Code
$form['choice_wrapper']['choice']
handelt es sich um ein untergeordnetes Element und$form['choice_wrapper']['#tree']
um eine Eigenschaft.Alle diese Eigenschaften sind in der Formular-API-Referenz aufgeführt . Es gibt viele Eigenschaften, bei denen es jedoch ausschließlich um Rendering, Validierung und Übermittlung geht.
Der Grund für die Verwendung eines Präfixes für Eigenschaften ist das schnelle Herausfiltern der Eigenschaften aus den untergeordneten Elementen. Dies ist nützlich, wenn sie gerendert werden müssen, beispielsweise mit drupal_render () , das den folgenden Code enthält.
Wenn Sie sich element_children () ansehen , werden Sie feststellen, dass der Code zum Herausfiltern von Eigenschaften der folgende ist.
quelle