2017-08-24 1 views
0

Mon extrait de code:dans codeigniter, j'utilise le même nom pour plusieurs entrées (type = "texte"), pendant soumettre je veux permettre au moins une valeur, comment puis-je valider?

<div class="col-sm-2"> 
    <label>Weight</label> 
    <?php for($i=0;$i<4;$i++){ ?> 
     <input type="text" placeholder="Weight" name="weight[]" id="weight_<?php echo $i; ?>" class="form-control weight_cls" /> 
    <?php } ?> 
    <div class="err"><?php echo form_error('weight[]'); ?></div> 
</div> 

Si j'utilise après validation de CI:

$this -> form_validation -> set_rules('weight[]', 'Weight', 'required|numeric'); 

Ensuite, il ne permettra pas que remplir tous les champs ..

Je veux permettre à au moins un. . comment puis-je??

+0

Ne pas utiliser la validation de formulaire CodeIgniter mais écrire votre propre règle. Comme 'if (count ($ this-> input-> post ('weight')) == 0) {// error}' –

+0

mais il y a besoin de validation de codeigniter pour les autres champs .. alors comment puis-je? – Amita

+0

Mettez votre règle après les règles de validation de formulaire CodeIgniter –

Répondre

1

obtenir le formulaire d'entrée sous forme

$weight = $this->input->post('weight'); //or get as your form 

poids $ est un tableau de sorte que vous pouvez utiliser foreach pour valider chaque élément comme ci-dessous:

foreach($weight as $key=>$val) 
{ 
    $this->form_validation->set_rules("weight[".$key."]", "weight", 'required|numeric'); 
    // you can have one more row as per your requirement. 
} 
0

Créer votre propre méthode de validation:

$this->form_validation->set_rules('weight[]', 'Weight', 'callback_weight_check'); 

Et dans le même contrôleur:

public function weight_check($weight) 
{ 
    if(count(array_filter($weight)) == 0) { 
    { 
     $this->form_validation->set_message('weight_check', 'Fill at least one value'); 
     return false; 
    } 

    return true; 
} 

Plus d'infos: https://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation-methods