Что противоположно inList в моей модели CakePHP?

#php #cakephp #model #cakephp-2.0

#php #cakephp #Модель #cakephp-2.0

Вопрос:

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

В следующем коде указано, что имя должно быть Bob, Bobbie или Bobzilla:

 'name'  => array(
    'rule' => array('inList', array('Bob', 'Bobbie', 'Bobzilla')),
    'message' => 'Stop it Bob!'
),
  

Мне нужно, чтобы пользователь не мог ввести ни одно из этих имен. Мне кажется, что inList должно быть notInList .
Я перепробовал много способов, но ни один из них не привел меня в Рим.

Если бы вы могли мне помочь, я был бы очень признателен!

Комментарии:

1. Похоже, что в 2.x нет notInList, как вы сказали. Вам нужно будет создать свое собственное правило проверки, как показано здесь: book.cakephp.org/2.0/en/models /…

2. Спасибо! Я работаю над этим прямо сейчас. Я просто подумал, что будет более простой / с меньшим количеством кода способ.

Ответ №1:

Взгляните на функцию PHP in_array, что-то вроде

 if (!in_array(ENTERED_NAME,YOUR ARRAY)) {

}
  

Ответ №2:

Это лучшее решение, которое я смог придумать:

 public function itsBob($check) {  
    $bobArr = ['Bob', 'Bobbie', 'Bobzilla'];

    if (!in_array($check['name'], bobArr) {
        return false;
    }
    return true;
}
  

Со следующими строками в $validation:

 'name' => array(
    'rule' => array('itsBob'),
    'message' => 'Stop it bob!'
),
  

itsBob буквально делает противоположное inList .

Комментарии:

1. Не стесняйтесь вызывать функцию outList($check) или что-то еще.