Titel sagt eigentlich schon alles, ich möchte ein einzelnes Kontrollkästchen eines Kontrollkästchens vom Typ FAPI-Element deaktivieren .
Ich möchte weder mit JavaScript arbeiten noch es von Kontrollkästchen auf mehrere Kontrollkästchenelemente umstellen, da das Element von einem anderen Modul bereitgestellt wird.
Gedanken?
Antworten:
Ein sauberer Weg existiert in Drupal 7! Anscheinend ist dieser Beitrag noch nicht dokumentiert.
Ein weiteres Beispiel .
Sie können auch die #access- Funktion auf FALSE setzen, um das Kontrollkästchen vollständig auszublenden.
quelle
Leider gibt es in FAPI keine wirklich saubere Möglichkeit, dies zu tun. Wenn Sie fest entschlossen sind, ändern Sie am besten eine zusätzliche #Prozessfunktion für das Kontrollkästchen-Element.
Die Standardfunktion, die Elementen vom Typ 'Checkboxes' hinzugefügt wird, ist eine Funktion ( expand_checkboxes () ), die das einzelne Element in mehrere Elemente vom Typ 'Checkbox' aufteilt , die später wieder zu einem zusammengeführt werden. Wenn Sie Ihre zweite Prozessfunktion huckepack nehmen, könnte sie in die erweiterte Gruppe der 'Checkbox'-Elemente eingreifen und die betreffende deaktivieren.
Der folgende Code ist völlig ungetestet, daher Vorbehalt:
quelle
preg_replace()
die Ausgabe zu überfliegen.Hier ist mein Code für Drupal 7, um das Roles-Element auf der Edit User-Seite zu ändern.
quelle
Ich verwende Kontrollkästchen als "zuweisen" und "nicht zuweisen". Der Client hat mich gebeten, die Zuweisung aufzuheben, aber es ist immer noch wichtig, die Zuweisung darzustellen. Unter Berücksichtigung der Tatsache, dass deaktivierte Kontrollkästchen als "falsch" gesendet werden und bei falscher Behandlung die Zuweisung aufgehoben wird, teile ich meine Kontrollkästchen in "Diese verarbeiten" und "Diese deaktivierten ignorieren" auf. Hier ist wie:
Beachten Sie, dass 'partner_assignments' ein eigenes Array / eine eigene Variable ist und in meinem Anwendungsfall nicht als "unassign" verarbeitet wird. Vielen Dank für die Veröffentlichung - es führte mich zu dieser Lösung.
quelle
D7. Hier mussten wir sicherstellen, dass beim Hinzufügen eines Knotens eine bestimmte Referenzoption für Taxonomiebegriffe immer deaktiviert ist und immer auf dem Knoten gespeichert wird. Also gingen wir in #after_build und deaktivierten diese bestimmte Option, mussten aber sicherstellen, dass am Ende diese bestimmte Option weitergegeben wird. Das Deaktivieren dieser Option hätte die Weiterleitung an zukünftige Hooks gestoppt.
So sieht die deaktivierte Option aus:
quelle
Ich konnte nicht erreichen, dass Eatons Antwort so funktioniert, wie sie geschrieben wurde (der # Process Callback gibt nichts zurück und wird aufgerufen, bevor die Kontrollkästchen erweitert werden), und ich wollte auch, dass der Wert aus dem deaktivierten Kontrollkästchen zurückgegeben wird (ich wollte, dass er permanent aktiviert wird ). Das hat bei mir geklappt (D6).
Wenn jemand einen besseren Weg kennt, würde ich ihn gerne hören!
quelle
Fatal error: Call to undefined function expand_checkboxes()
Hier ist mein Code für Drupal 7, um das Roles-Element auf der Edit User-Seite zu ändern.
quelle
In Drupal 7 musste ich eine
#process
Funktion installieren, um die Optionen in einer Auswahl in einer feldfähigen Entität zu deaktivieren . Leider hat dies die eingebaute Prozessfunktion deaktiviertform_process_checkboxes
, so dass diese wieder hinzugefügt (oder von Ihrer Prozessfunktion aufgerufen) werden muss. Beim Deaktivieren von Kontrollkästchen, die bereits aktiviert sind, wurde festgestellt, dass der integrierte Wert callback (form_type_checkboxes_value
) beim Abrufen von Ergebnissen aus der Eingabe die Standardwerte ignoriert.Dann etwa so:
Und schlussendlich:
Ich habe in diesem Fall keine der anderen Antworten auf dieser Seite gefunden.
quelle
Hier ist mein Beispiel (mit
#after_build
):Dazu der folgende Funktionsrückruf:
Getestet auf Drupal 6, sollte aber auch auf Drupal 7 funktionieren.
Drupal 6
Sie können die folgende Funktion ( Quelle ) verwenden:
quelle
Ich benutze diesen folgenden Code bei Drupal 6: -
und die Rückruffunktion ist hier: -
/ ** * Jedes Kontrollkästchen basierend auf 'feture' wird bereits von einer Subdomain verwendet oder nicht. * @param Array $ element Array von Formular-Checkboxen * /
quelle
Es ist wichtig zu berücksichtigen, dass deaktivierte Kontrollkästchen nicht
#value
gesendet werden. Daher müssen Sie möglicherweise auch das Aktivieren des Kontrollkästchens erzwingen . Beispiel:In meinem Fall
$form_state['values']
enthielt das ohne dieses Kontrollkästchen nicht meinen Kontrollkästchenwert (der standardmäßig aktiviert, aber deaktiviert war).quelle
Haken Sie das Textfeld ein und erstellen Sie ein dynamisches Textfeld mit Informationen aus der Datenbank
1 ° bekommen die assoc. Array aus Datenbank zB
2 ° Anbaugeräte
hook_form_alter()
/ ** * Implementiert hook_form_alter (). * form id = Views-Exposed-Form * /
3 ° mehrere Felder werden ankreuzbar sein!
quelle
Wenn Sie ein eigenes Formular erstellen, können Sie statt der separaten form_alter / # process / # pre_render-Funktionen einfach von 'checkboxes' zu einzelnen 'checkbox'-Elementen wechseln.
'#tree' => TRUE
Gibt Ihnen die gleiche Baumstruktur wie die Version der Kontrollkästchen, wenn das Array $ form_state ['values'] bei validation / submit / rebuild eintrifft. Wenn Sie #tree aus irgendeinem Grund nicht verwenden können oder möchten, geben Sie jedem Kontrollkästchen eine'#parents' => array('my_element', $key)
Eigenschaft, mit der die Position in der Wertestruktur explizit festgelegt wird.quelle