2016-06-17 8 views
1

Ich möchte benutzerdefinierte Validierungsregel in CodeIgniter 3 erstellen, aber ich möchte gebuchtes Array validieren (keine Zeichenfolge). In CodeIgniter-Dokumenten wurde Array auch unterstützt.Siehe Array in benutzerdefinierten Formular Validierungsregel in coderigniter

HTML:

<select name="bonus[]" class="form-control"> ... </select> 
<select name="bonus[]" class="form-control"> ... </select> 
<select name="bonus[]" class="form-control"> ... </select> 

VALIDATION:

$this->form_validation->set_rules("bonus[]", "Bonuses", "all_unique"); 

Gültigkeitsregel all_unique

public function all_unique($array) 
{   
    $this->CI->form_validation->set_message('all_unique', '%s are not unique.'); 

    if(count(array_unique($array))<count($array)) 
    { 
     // Array has duplicates 
     return FALSE; 
    } 
    else 
    { 
     // Array does not have duplicates 
     return TRUE; 
    } 
} 

Im Allgemeinen ich, wenn ausgewählte Boni überprüfen möchten nicht duplizieren. (Die Anzahl der ausgewählten Bonusfelder kann variieren.)

Das Problem dabei ist, dass der an all_unique Validierungsmethode übergebene Wert als String nicht als Array übergeben wird, sondern der Wert des ersten Bonus [] -Feldes. Wie kann ich das Sende-Bonus-Array [] validieren?

Antwort

1

Sie müssen callback in set_message verwenden all_unique Funktion

$this->form_validation->set_rules("bonus[]", "Bonuses", "callback_all_unique"); 

Um Array Feldwert innerhalb Rückruf Verwendung post-Methode als

function all_unique() 
{   
    $array = $this->input->post('bonus');// get bonus value 
    $this->CI->form_validation->set_message('all_unique', '%s are not unique.'); 

    if(count(array_unique($array))<count($array)) 
    { 
     // Array has duplicates 
     return FALSE; 
    } 
    else 
    { 
     // Array does not have duplicates 
     return TRUE; 
    } 
} 
+0

ich nicht erwähne dies, zu erhalten zu nennen. Ich überschreibe die ValidationForm-Bibliothek. In diesem Fall denke ich, dass es kein Problem ist. – energetyk

+0

Wie überschreiben Sie es ??? und Validierungsregel ist 'is_unique' nicht' all_unique' – Saty

+0

Ich meine, ich erstelle eigene MY_Form_validation.php Datei in Anwendung/Bibliotheken. Und meine benutzerdefinierten Validierungsregeln sind da. – energetyk

Verwandte Themen