Проверка CakePHP - isUnique ИЛИ inList - PullRequest
0 голосов
/ 05 июля 2011

(Впервые в CakePHP, так что это может быть очевидной вещью, но я не смог найти решение после поиска в течение нескольких часов - двусмысленная природа "или", я думаю ...)

Я пытаюсь изменить существующее правило проверки CakePHP, в котором используется правило isUnique, чтобы оно проверяло значения, которые удовлетворяют либо правилу isUnique, либо правилу inList.

предыдущий код:

'isUnique' => array(
  'rule' => 'isUnique' ,
  'message' => "We're sorry, but this QA number is already being used.",
  'last' => TRUE,
),

Мой (неисправный) код:

'isUnique' => array(
  'rule' => array( 
    'isUnique' ,
    array( 'inList' , array( '111213' , '141516' , '171819' , '202122' ) )
  ) ,
  'message' => "We're sorry, but this number is already being used.",
  'last' => TRUE,
),

Итак, (как бы это ни было просто), как вы можете связать правила проверки CakePHP с логическим оператором «ИЛИ»? Я вижу, что вы можете применить каскад правил «И» (при каждом тестировании для определенной проблемы и, если не пройдете этот тест, отклонить значение), но правила «ИЛИ» заставят меня почесать голову ...

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 05 июля 2011

Вам нужно будет сделать это пользовательским правилом проверки . Добавьте это в вашу модель:

public function isUniqueOrInList(array $data, array $list) {
    return in_array(current($data), $list) || $this->isUnique($data);
}

Затем объявите ваше правило следующим образом:

'rule' => array('isUniqueOrInList', array('111213', '141516', '171819', '202122'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...