Standardmäßig sieht das HTML-Markup für Optionsfelder wie folgt aus (Drupal 7):
<div class="form-item form-type-radio form-item-SOME_ID">
<input id="edit-SOME_ID" class="form-radio" type="radio" value="SOME_VALUE" name="SOME_NAME" />
<label class="option" for="edit-bla-bla">MY LABEL</label>
</div>
Ich muss einige CSS-Klassen im äußeren ändern / hinzufügen <div>
ODER einen Wrapper hinzufügen <div>
. Wie mache ich das?
Antworten:
Wenn Sie das Formular selbst definieren, können Sie ein Element mithilfe der Eigenschaften
#prefix
und mit HTML#suffix
umschließen:Wenn Sie dem vorhandenen Wrapper eine Klasse hinzufügen möchten, können Sie dies über die
#attributes
Eigenschaft tun :Wenn Sie das Formular nicht selbst definieren, können Sie dennoch dieselbe Logik verwenden und a implementieren
hook_form_alter()
, um das vorhandene Formular zu ändern:Beachten Sie, dass Sie bei Verwendung der
hook_form_alter()
Methode an das vorhandene Klassenarray anhängen sollten, um keine zuvor festgelegten Klassen zu überschreiben.quelle
Sie können die oben genannten Schritte (Präfix / Suffix) für die Elemente im Optionsarray ausführen, um dann für jedes Element alles zu erhalten, was Sie möchten.
quelle
Ich konnte dies erreichen, nachdem ich viel gearbeitet und jede veröffentlichte Methode mit einem intelligenten Tipp ausprobiert hatte, den ich tief im Internet auf einer anderen Website gefunden hatte: http://e9p.net/altering-individual-radio-or-checkbox-items-drupal- 7-fapi , um das Formelement
#after_build
einzelner Radios ändern zu können, sobald sie ein Drupal-Render-Array sind.Ich wollte, dass jedes Radio in einen Container mit einer Klasse eingewickelt wird, also benutzte ich
#prefix
und#suffix
tat das:Beispiel verwenden:
Wenn Sie jedoch nur möchten, dass das
input
Element die Klasse hat, müssen Sie die Lösung implementieren, die ich auf drupal.org unter https://api.drupal.org/comment/60197#comment-60197 veröffentlicht habe , damit die #options_attributes verwendet werden können richtig für einzelne Optionen. Code hier erneut veröffentlichen:Beispiel verwenden:
quelle
Die einzige Möglichkeit, dies zu erreichen, besteht darin, für jedes Funkgerät ein anderes Formularelement zu erstellen, die Namen manuell mit #name zu koppeln und mit #attributes manuell einen Wert festzulegen. (#value funktioniert aus irgendeinem Grund nicht.)
Zum Beispiel:
Dadurch werden den einzelnen Optionsfeldern anstelle der Optionsgruppe ein Wrapper und eine Klasse hinzugefügt, wie dies bei der aktuell akzeptierten Antwort der Fall ist.
quelle