2012-07-19 4 views
1

Je suis tombé sur un problème où je ne vois pas pourquoi codeIgniter ignore la configuration de mes règles dans le "form_validation.php" dans lequel j'utilise le code suivant.CodeIgniter "form_validation.php" ne fonctionne pas comme prévu?

$config = array(
'racedetails' => array(
    array(
     'field' => 'race_memberno', 
     'label' => 'MembershipNumber', 
     'rules' => 'required' 
    ), 
    array(
     'field' => 'race_penalties', 
     'label' => 'Penalties', 
     'rules' => 'required' 
    ) 
); 

J'appelle alors la validation mis sur mon contrôleur à l'aide:

$this->form_validation->run('racedetails'); 

Cependant, il dit toujours faux quand a couru la forme court normale et retourne aucune erreur, est-il somthing d'autre que je peut avoir manqué ?

La fonction d'exécution Validation Au-dessus fonctionne dans le suivant (demandé par Dale)

public function index($id){ 
    $this->load->library('form_validation'); 
    if($this->form_validation->run('racedetails')){$validated++;} 

    if($validated != 1){ 
     $this->process_template_build('entries/entry',$data); 
    }else { 
     echo "Validation Passed"; 
    } 
} 
+0

Pourriez-vous poster le code de la méthode dans laquelle il se trouve? – Dale

+0

Avez-vous essayé $ this-> form_validation-> run ($ config ['racedetails'])? –

+0

Yan - Oui a essayé avec le $ config mis il renvoie juste une variable indéfinie. – yardster

Répondre

0

Ne vous oubliez d'utiliser réellement le fichier $config avant d'exécuter la validation?

$this->form_validation->set_rules($config); 
+0

Où cela devrait-il être défini? car cela provoque la variable non configurée "$ config" lorsqu'elle est utilisée dans le constructeur ou la fonction du contrôleur. – yardster

+0

Juste en dessous de votre '$ config = array (......);' et AVANT d'exécuter la validation. – Robert

+0

J'ai eu l'impression que les règles étaient automatiquement chargées depuis /application/config/form_validation.php http://codeigniter.com/user_guide/libraries/form_validation.html#savingtoconfig – yardster

1

J'ai eu le même problème et la raison était que je suis en utilisant une propre classe Form_validation pour Stlye la sortie d'erreur au niveau mondial.

J'ai oublié de transmettre les règles au constructeur parent. Donc, voici comment cela fonctionne avec une classe MY_Form_Validation:

class MY_Form_validation extends CI_Form_validation { 

public function __construct($rules = array()) 
{ 
    parent::__construct($rules); 

    $this->_error_prefix = '<div class="alert alert-danger" role="alert"><span class="title"><i class="icon-remove-sign"></i> ERROR</span>'; 
    $this->_error_suffix = '</div>'; 

} 

} 
Questions connexes