CodeIgniter - überprüfen leeren Wert
Wie bekomme ich CodeIgniter zum ausführen von benutzerdefinierten Regeln, die auf den Feldern, die nicht haben die required
Regel aber der Benutzer leer gelassen?
Die besten, die ich mit oben kommen kann ist ein Leerzeichen hinzufügen, um das Feld, wenn der string leer ist, und fügen Sie dann eine trim
Regel-aber das fühlt sich hacky.
Beispiel rule #1
Feld ist nur erforderlich, wenn ein anderes Feld einen bestimmten Wert hat:
//depends[another_field.some_val]
public function depends($str, $field){
list($post_key, $post_val)=explode('.', $field);
if($_POST[$post_key] == $post_val){
return $str != "";
}
return true;
}
Beispiel für Regel #2
Feld ist nur erforderlich, wenn ein regex ist in der Datenbank vorhanden:
//regex[table_name.col_name.some_val]
public function regex($str, $field){
list($table, $col, $post_val)=explode('.', $field);
//Grab the regex
$regex = $this->CI ->db
->limit(1)
->select($col)
->where($post_val, $_POST[$post_val])
->get($table)
->row($col);
return preg_match('/'.$regex.'/', $str) === 1;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum gibt es eine Notwendigkeit, eine andere Funktion für eine einfache Aufgabe. Verwenden
if..else
.Vorausgesetzt, dass, wenn
input1
hat Wert entsprichtvalue1
, dann nur Sie haben, um dierequired
Gültigkeitsregel für den anderen Eingang, die sageninput2
.Anzeigen:
Controller:
Vom code, das problem, das Sie hinweisen, ist, dass Sie BRAUCHEN, stellen Sie ein Feld erforderlich. Gut, eine Art von erforderlich Feld mit einer neuen Regel: 'keep_checking'. Auf diese Weise zwingen Sie das system, um zu überprüfen, was Sie wollen. Was ich getan habe:
application/libraries
OrdnerLetzten Punkt, nach der Erweiterung des Form_validation Klasse haben Sie einen Ort, um alle Ihre neue benutzerdefinierte Regeln, die Sie verwenden werde die ganze Zeit XD
UPDATE:
Checkbox Linie zu vermeiden, halten Sie die überprüfung. Fügen Sie einfach die neue Zeile habe ich Hinzugefügt, und es wird funktionieren. Sie haben zum hinzufügen von keep_checking Regel zu jedem Feld, das Sie überprüfen möchten:
Stadtplan: form.php
Nach dem submit das Formular aus, Sie werden sehen, wie CI-check werden alle Regeln aus dem input-Felder. Letzter Punkt, nicht vergessen, dass MY_Form_validation geht innerhalb von Bibliotheken Ordner
MY_Form_validation.php
, fügte meine eigenen Regeln vor der letzten}
und fügte hinzu, Ihrekeep_checking
Regel; es scheint nicht, etwas zu ändern.Ich denke was du suchst ist
callbacks
Können Sie festlegen, Rückrufe in der Regel
Und jetzt haben Sie eine Funktion mit boolean-Rückgabewert.
MY_Form_validation.php
mit allen anderen Regeln.Ich gearbeitet habe, einen Weg zu finden, dies selbst durch Bearbeiten
system/libraries/Form_validation.php
.Änderte ich
$callback
zuTRUE
on line 487:Und auskommentierten Zeilen 488 - 500:
Die bounty steht immer noch, wenn jemand eine Lösung ohne Bearbeitung CodeIgniter ist
system
- Dateien.Können Sie eine versteckte Eingabe in der Ansicht mit bleibendem Wert und testen Sie es in der Regeln überprüft.
Im Blick:
Im Modell oder den controller (es hängt von Ihrer Architektur)