В моей форме есть несколько полей с именами / адресами электронной почты, например:
data[Friend][0][name]
data[Friend][1][name]
data[Friend][2][name]
и т.д.
и
data[Friend][0][email]
data[Friend][1][email]
data[Friend][2][email]
и т.д.
У меня есть пользовательское правило проверки, которое проверяет, заполнено ли соответствующее поле. Т.е. если данные [Друг] [2] [имя], то данные [Друзья] [2] [электронная почта] ДОЛЖНЫ быть заполнены.
К вашему сведению, вот как выглядит одно из двух правил:
Правило проверки моей формы: (У меня тоже есть подтверждение по электронной почте, но это не имеет значения)
'name' => array(
'checkEmail' => array(
'rule' => 'hasEmail',
'message' => 'You must fill in the name field',
'last' => true
)
)
Мой код правила:
function hasEmail($data){
$name = array_values($data);
$name = $name[0];
if(strlen($name) == 0){
return empty($this->data['Friend']['email']);
}
return true;
}
Мне нужно сделать так, чтобы одна из пар была заполнена как минимум . Может быть любым, если индексы соответствуют.
Я не могу придумать, как если бы я установил правило формы как обязательное или allowEmpty false, оно завершится неудачей во ВСЕХ пустых полях. Как я могу проверить наличие 1 пары и, если она есть, продолжить?
Кроме того, мне нужно удалить все оставшиеся пустые поля [Friend], чтобы мой saveAll () не сохранял загрузку пустых строк, но я думаю, что могу обработать эту часть, используя extract в моем контроллере. Основная проблема - это проверка. Спасибо.