2017-05-12 6 views
0

Ich habe auf ein Problem stoßen, und ich weiß nicht, wo seine kommen: Codeigniter 3.1.2Form Validation Set Checkbox nicht funktioniert

Dies ist mein Code:

$this->form_validation->set_rules("fielda", "Field A", ""); 
$_POST["fielda"] = "valuea"; 
var_dump(set_checkbox("fielda", "valuea")); 
var_dump(set_radio("fielda", "valuea")); 
var_dump(set_select("fielda", "valuea")); 
var_dump(set_value("fielda", "valuea")); 

Dies ist das Ergebnis:

string(0) "" 
string(0) "" 
string(20) " selected="selected"" 
string(6) "valuea" 

Warum gibt die set_checkbox und set_radio eine leere Zeichenfolge zurück?

side note: Dies ist nur das Testszenario für ein besseres Verständnis und nicht der endgültige Code

Antwort

1

2 Gründe, warum:

  1. Weil es prüft, ob die tatsächliche Anfrage-Methode POST ist, nicht nur das $_POST Array.
  2. Wenn Sie die Formular-Validierung Bibliothek verwenden, werden auch die Helfer es für Felder, die Sie Validierungsregeln für, festgelegt haben und Sie $_POSTnachset_rules(), bei dem die Bibliothek verweisen ändern bereits, dass das Feld wasn bestimmt hat‘ t senden. (Dies kommt nicht wirklich in Kraft treten hier als set_rules() Anruf keine Regeln enthält und ignoriert wird)

das Formular für eine echte und es wird funktionieren. Eine geeignete Methode zum Emulieren wäre folgende:

$input = array("fielda" => "valuea"); 
$this->form_validation->set_data($input); 
$this->form_validation->set_rules("fielda", "Field A", "alpha"); 
$this->form_validation->run(); 
var_dump(set_checkbox("fielda", "valuea")); // will now output "valuea" 
+0

Vielen Dank für Ihre Hilfe. Ihre Antwort scheint echt zu sein, aber selbst wenn Sie Ihren Vorschlag kopieren, gibt var_dump eine Null-Zeichenfolge zurück. – Shardas

+0

In der Tat müssen Sie auch die Validierung ausführen ... aktualisiert die Antwort. – Narf

+0

Verdammt, das ist es :) Vielen Dank – Shardas

0

Verwendung dritter Parameter für Schaltfläche Checkbox oder Radio wie

var_dump(set_checkbox("fielda", "valuea",TRUE)); 
+0

Wenn der dritte Parameter TRUE ist, wird das Kontrollkästchen aktiviert, wenn keine verwandten Daten gesendet wurden. Aber in meinem Fall wurden die Daten gesendet, aber nicht von der Funktion set_checkbox() erkannt. – Shardas