2016-12-05 4 views
0

die min/max Länge eines Array-Feldes angeben, habe ich ein Array in dem $_POST Variable, und ich will es überprüfen: questions ich mag das ArrayWie in codeigniter

$this->validator->set_rules('questions[]', 'questions', 'required|min_length[10]'); 

In diesem Fall Länge haben, mindestens 10, ist das Problem, dass dies nicht, < für Arrays mit einer Länge funktioniert 10 der Validator keine Fehler entdeckt, hier ist mein abgeladen Post Beispiel:

array(1) { ["questions"]=> array(0) {} }

wenn ich laufe:

if($this->validator->run() == false){...}else{...}

die Methode return true und der Code wird in den else eingeben.

Weiß jemand, wie kann ich das tun?

Antwort

0

Sie können eine Rückruffunktion schreiben, ich gebe ein Beispiel. Angenommen, Sie möchten Ihr Array auf mindestens 10 Werte beschränken.

$this->validator->set_rules('questions[]', 'questions', required|callback_checkLength'); 

Und schreiben Sie die Funktion wie folgt aus:

function checkLength(){ 
    if(count($this->input->post("questions[]") < 10) { return false }; 
    else { return true; } 
} 

Hope this Ihnen hilft.

+0

mit diesem Ansatz muss ich meine Variable '$ POST' (die validiert) als global deklarieren, da die Funktion für jedes Element im Array 'Fragen' aufgerufen wird, auch wenn ich das Feld' Fragen' anstelle von verwenden 'questions []' weil im ersten Fall CI nichts als Parameter an den Callback übergibt. Ich kann damit gehen, aber ich würde gerne wissen, ob es andere Optionen gibt ... –