2012-06-14 4 views
0

У меня есть CakePHP правило +2,1 проверки в моделиправила и функции валидации

'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.' 
       ) 
      ) 

Я следующий код для тэ 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)); 

Но я получаю сообщение об ошибке на не в состоянии найдите index user_id. Что дает?

ответ

0

так что вы хотите проверить isUnique на основе дополнительных полей, не так ли?

попробовать мой метод validateUnique: https://github.com/dereuromark/tools/blob/2.0/Lib/MyModel.php#L818

так что вы получили:

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

ваша проблема, кажется, что ваш метод проверки сработал, даже если нет user_id в ваших передаваемых данных.

0

isUnique уже встроены в торт:

'name' => array(
    'isUnique' => array(
     'rule' => array('isUnique'), 
     'message' => 'Name already exists', 
    ), 
Смежные вопросы