2011-06-02 3 views
2

J'ai ce code:Codeigniter min_length [] ne fonctionne pas

$this->form_validation->set_rules('quadra_numero', 'Quadra número', 'required|trim|numeric|xss_clean|min_length[3]|max_length[3]|callback_valida_quadra_setor'); 

Les œuvres max_length[3] mais pas le min_length[3].

J'ai vérifié la valeur retournée avec strlen($quadra_numero) et il me renvoie 2 caractères mais la validation semble l'ignorer.

Dans mon formulaire j'ai le numéro 091, dans ma base de données c'est un VARCHAR pour garder le 0 qui est nécessaire.

Si je poste 0912 il retournera l'erreur pour max_length mais si je le change en 91 passera la validation.

Si je poste 09 cela fonctionnera, seulement avec le 0 (zéro) est enlevé cela ne fonctionnera pas.

Des idées?

Merci d'avance pour toute aide.

--EDIT J'ai essayé d'utiliser exact_length [8] et j'ai obtenu les mêmes résultats. Le problème est avec le 0 (zéro).

+0

Un autre utilisateur de CI Forum m'a dit "Je n'ai pas vérifié la longueur min et max du bug mais il y a une règle exact_length que vous pourriez utiliser. " mais cela n'a pas fonctionné =/Je suppose que je vais devoir vérifier la longueur du nombre et ajouter un 0 (zéro) si la longueur est égale à 2 .... toujours en attente d'aide – Gerep

+1

Qu'y a-t-il dans le rappel? Avez-vous essayé d'utiliser * seulement * les règles min/max? –

Répondre

2

Juste au premier coup d'oeil, vous avez probablement besoin de typer la variable d'une chaîne avant de l'envoyer.

$quadra_numero = (string)$quadra_numero; 

ou

$quadra_numero = strval($quadra_numero); 

et voir si cela prend en charge le problème. Le strlen convertit la variable en une chaîne avant de vérifier la longueur, mais la validation n'est probablement pas