Проверка модели в CakePHP проверяет, установлен ли хотя бы один или другой - PullRequest
2 голосов
/ 01 июня 2011

Есть ли способ проверить данные (используя проверку модели CakePHP), чтобы убедиться, что по крайней мере "a" или "b" имеют данные (не обязательно иметь данные в обоих).

Ответы [ 3 ]

4 голосов
/ 02 июня 2011

В вашей модели сделайте что-то подобное. Функция будет вызываться при выполнении операции сохранения.

EDITED

public $validate = array(
    'a' => array(
        'customCheck' => array(
            'rule' => 'abCheck',
            'message' => 'You must enter data in a or b.'
        )
    ),
    'b' => array(
        'customCheck' => array(
            'rule' => 'abCheck',
            'message' => 'You must enter data in a or b.'
        )
    )
);

//Function must be public for Validator to work
//Checks to see if either a or b properties are set and not empty
public function abCheck(){
    if((isset($this->data['Model']['a']) && !empty($this->data['Model']['a'])) || (isset($this->data['Model']['b']) && !empty($this->data['Model']['b']))){
         return true;
    }
    return false;
}
1 голос
/ 01 июня 2011

Вы можете проверить эти условия с помощью «пользовательских проверок».

см. Это: добавление собственной проверки

0 голосов
/ 13 июля 2012

Попробуйте вместо этого:

public $validate = array(
     'a' => array(
         'customCheck' => array(
             'rule' => array('abCheck', 1),
             'message' => 'You must enter data in a or b.'
         )
     ),
     'b' => array(
         'customCheck' => array(
             'rule' => array('abCheck', 1),
             'message' => 'You must enter data in a or b.'
         )
     )
 );

 //Function must be public for Validator to work
 //Checks to see if either a or b properties are set and not empty
 public function abCheck(){
     if((isset($this->data['Model']['a']) && !empty($this->data['Model']['a'])) > || (isset($this->data['Model']['b']) && !empty($this->data['Model']['b']))){
          return 1;
     }
     return -1;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...