2012-06-14 4 views
0

I ont une règle CakePHP 2.1 de validation dans le modèleLes règles de validation et les fonctions

'name' => array(

       'empty' => array(
        'rule' => 'notEmpty', 
        'required' => true, 
        'allowEmpty' => false, 
        'message' => 'Name is required.' 
       ), 
       'unique' => array(
       'rule' => 'checkUnique', 
       'required' => true, 
       'allowEmpty' => false, 
       'message' => 'Name already exists.' 
       ) 
      ) 

Je le code suivant pour la méthode te checkUnique:

public function checkUnique($data) 
    { 
//App::import('Model','User'); 
// $this->User = & new User(); 


if(empty($this->data['TeacherLocation']['id'])) 
{ 
    $locationInfo = $this->find 
    (
     'all', 
     array 
     (
      'conditions'=>array 
      (
       'user_id' => $this->data['TeacherLocation']['user_id'], 
       'name' => $this->data['TeacherLocation']['name'] 
      ), 
      'recursive' => -1 
     ) 
    ); 

    return (empty($locationInfo)); 

Mais je continue à avoir une erreur sur incapable de trouver l'index user_id. Ce qui donne?

Répondre

0

Donc, fondamentalement, vous voulez vérifier isUnique basé sur des champs supplémentaires, non?

essayer ma méthode de validateUnique: https://github.com/dereuromark/tools/blob/2.0/Lib/MyModel.php#L818

si vous avez obtenu:

 'name' => array(
     ... 
     'unique' => array(
      'rule' => array('validateUnique', array('user_id')), 
      'required' => true, 
      'allowEmpty' => false, 
      'message' => 'Name already exists.' 
     ) 
    ) 

votre problème semble être que votre méthode de validation se déclenche même s'il n'y a pas user_id dans vos données transmises.

0

isUnique est déjà construit pour le gâteau:

'name' => array(
    'isUnique' => array(
     'rule' => array('isUnique'), 
     'message' => 'Name already exists', 
    ), 
Questions connexes