Das Kontrollkästchen bleibt auf der Seite mit den Plugin-Einstellungen nicht aktiviert
Lesezeit: 3 Minuten
Gregor L
Mein Kontrollkästchenfeld auf einer von mir geschriebenen Plugin-Seite bleibt nicht aktiviert. Die Daten werden gespeichert, aber das Kontrollkästchen gibt nicht den aktuell gespeicherten Wert wieder (markiert).
Hier ist mein Funktionscode:
public function jo_checkbox_del_setting()
{
echo "<input id='jo_checkbox_del' name="jo_plugin_options[jo_checkbox_del]" type="checkbox" value="{$this->options["jo_checkbox_del']}' />";
}
%1s bedeutet das erste Argument zu printfsodass Sie es nicht in der Argumentliste wiederholen müssen.
– Niklas Lindblad
8. September 2013 um 9:42 Uhr
@GregLancaster, ja, wie Niklas sagt. Normalerweise verwenden wir nur %s ohne OrderNumber$. Wenn Sie jedoch einen der Werte mehrfach verwenden oder in einer benutzerdefinierten Reihenfolge platzieren möchten, kommt die Bestellnummer zum Einsatz. Das PHP-Handbuch enthält viele Beispiele.
– Brasilo
8. September 2013 um 12:55 Uhr
Funktioniert das auch mit einem Optionsbutton? Ich habe Sie als beste Antwort erneut ausgewählt, das funktioniert wie ein Zauber.
– Gregor L
23. November 2013 um 9:48 Uhr
zoranc
verwenden {checked($this->options['jo_checkbox_del']);} innerhalb der <input> Element, um das geprüfte Attribut zurückzugeben, wenn die Option gesetzt ist.
Ich würde auch empfehlen, eine versteckte Eingabe mit demselben Namensattribut zu verwenden, um den Fall zu behandeln, wenn die Option nicht aktiviert ist
public function jo_checkbox_del_setting() {
echo "<input type="hidden" name="jo_plugin_options[jo_checkbox_del]" value="0" />";
echo "<input id='jo_checkbox_del' name="jo_plugin_options[jo_checkbox_del]" type="checkbox" value="{$this->options["jo_checkbox_del']}' {checked($this->options['jo_checkbox_del']);} />";
}
Die versteckte Eingabe stellt sicher, dass ein Wert gesendet wird, wenn die deaktivierte Checkbox-Eingabe nichts sendet, wie Niklas erwähnt hat
– zoranc
7. September 2013 um 16:52 Uhr
Verwenden Sie die checked stattdessen das Attribut des Checkbox-Tags:
Beachten Sie auch, dass standardmäßig Kontrollkästchen in einem Formular überhaupt nicht mitgesendet werden, wenn sie nicht aktiviert sind.
Diese Lösung passt wie angegossen und ist die EINZIGE hier aufgeführte, bei der das Kontrollkästchen aktiviert bleibt. Danke danke danke. Wenn ich Ihnen mehr Punkte vergeben könnte, würde ich dies tun, insbesondere für die Referenz – obwohl ich nicht glaube, dass der Ref-Link wirklich die Gründe dafür erklärt, warum / wie es funktioniert.
– Gregor L
9. September 2013 um 2:06 Uhr
Sie müssen überprüfen, ob das Kontrollkästchen aktiviert ist, und dies dem HTML-Teil der Seite mitteilen.
Also schlage ich vor, dass Sie hinzufügen echo is_checkbox_checked() ? "checked" : ""; wo is_checkbox_checked() ist die Funktion, die überprüft, ob [jo_checkbox_del] ist true oder false.