#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)
или что-то еще.