Я проверяю массив данных на Zend Form, где требуются некоторые элементы, т.е. setRequired (true), а другие являются необязательными, т.е. setRequired (false).
Когда массив данных содержит ключи, соответствующиенеобязательные элементы, мне нужна проверка для запуска на этих данных.Когда таких ключей нет, проверка НЕ запускается.
Звучит довольно просто, но это поставило меня в тупик.В необязательных элементах я использовал setAllowEmpty (false), полагая, что Zend Validate будет принудительно проверять наличие соответствующего ключа в массиве и игнорировать его в противном случае.На самом деле происходит то, что Zend Validate показывает ошибку, даже если элемент не существует в массиве.
Есть идеи?
ОБНОВЛЕНИЕ:
Я провел несколько тестов свсе возможные комбинации настроек элемента и диапазон различных типов $ data [element].Файл журнала приведен ниже.
Я не уверен, что результаты совпадают с документацией, и я также подозреваю, что использование setAutoInsertNotEmptyValidator () влияет на работу простого валидатора Alnum.(См. Тесты 3, 4, 13 и 14 ниже).
Кто-то хочет проверить мой код?Я рад отправить его.
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): РАЗРЕШЕНО: org / testform (kim@kimprince.com, admin) 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Настройки элемента: 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): ================= 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 1: setRequired () [по умолчанию:false] 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 2: setAllowEmpty () [по умолчанию: true] 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 3:setAutoInsertNotEmptyValidator () [по умолчанию: true] 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 4: добавить Alnum Validator 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Условия данных: 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): ================ 2011-04-19T13: 06: 59 + 10:00 DEBUG (7): A: data [element] = Foo 2011-04-19T13: 06: 59 + 10:00 DEBUG (7): B: данные [элемент] являются ПУСТОЙ 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): C: данные [элемент] НЕ СУЩЕСТВУЮТ 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА(7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): # 1 === 2 === 3 === 4 ===== A ======= B ======= C ===== 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 1 Т |T |T |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: значение требуется и не может быть пустым 2011-04-19T13: 06: 59 + 10:00 ОТЛАДКА (7): Ошибка C: значение является обязательным и не может быть пустым 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 2 Т |T |T |F: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: значение требуется и не может быть пустым 2011-04-19T13: 06: 59 + 10:00 ОТЛАДКА (7): Ошибка C: значение является обязательным и не может быть пустым 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 3 Т |T |F |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: '' - пустая строка 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка C: указан неверный тип.Ожидается строка, целое число или число с плавающей запятой 2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 4 T |T |F |F: pass pass pass
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 5 T |F |T |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: значение требуется и не может быть пустым 2011-04-19T13: 06: 59 + 10:00 ОТЛАДКА (7): Ошибка C: значение является обязательным и не может быть пустым 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 6 Т |F |T |F: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: значение требуется и не может быть пустым 2011-04-19T13: 06: 59 + 10:00 ОТЛАДКА (7): Ошибка C: значение является обязательным и не может быть пустым 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАД (7): 7 T |F |F |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: '' - пустая строка 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка C: указан неверный тип.Ожидается строка, целое число или число с плавающей запятой 2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 8 T |F |F |F: pass pass pass
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 9 F |T |T |T: pass pass pass
2011-04-19T13: 06: 59 + 10:00 DEBUG (7):
2011-04-19T13: 06: 59 + 10:00 DEBUG (7): 10 F |T |T |F: pass pass pass
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 11 F |T |F |T: pass pass pass
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7):
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): 12 F |T |F |F: pass pass pass
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 13 F |F |T |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: '' - пустая строка 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка C: указан неверный тип.Ожидается строка, целое число или число с плавающей запятой 2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 14 F |F |T |F: pass pass pass
2011-04-19T13: 06: 59 + 10:00 DEBUG (7):
2011-04-19T13: 06: 59 + 10:00 DEBUG (7): 15 F |F |F |T: pass FAIL FAIL
2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка B: '' - пустая строка 2011-04-19T13: 06: 59 + 10: 00 ОТЛАДКА (7): Ошибка C: указан неверный тип.Ожидается строка, целое число или число с плавающей запятой 2011-04-19T13: 06: 59 + 10: 00 DEBUG (7):
2011-04-19T13: 06: 59 + 10: 00 DEBUG (7): 16 F |F |F |F: проход проход проход