0

Вот ситуация: при создании проекта в CodeIgniter 2.2.0 я пытался проверить табличную форму с помощью специального валидатора данных. Табличная форма была настроена для передачи данных POST на сервер в стандартном формате массива, и я использовал ненулевые цифровые клавиши. Мои ключи, которые кодируют важные данные, начались с 1 в форме, которую я пытался отлаживать. Я заметил, что класс Form_validation CodeIgniter вызывал мой валидатор во 2-й и 3-й строке моих данных (с ключами 2 и 3 соответственно), но не с первой строкой (с ключом 1).В CodeIgniter 2.2.0, почему валидатор формы не вызывает мою пользовательскую процедуру проверки входных данных массива?

Почему это должно быть так? CodeIgniter Form_validation documentation указывает, что вы можете использовать нечисловые ключи массива, поэтому можно было бы ожидать ненулевых числовых ключей массива.

ответ

0

После некоторой отладки я обнаружил, что Form_validation :: _ execute() (в системе/library/Form_validation.php) имеет переменную $ циклов, целое число на основе нуля, которое измеряет количество раз, когда какое-либо конкретное правило было вызывается на основе массива. К сожалению, функция __execute() использует эту переменную $ циклов для ссылок на элементы пост-данных (например, строка 552 в моей сборке, которая, как представляется, равна 2.2.0). Это приводит к обходу элементов входного массива, которые не привязаны к нулевым целям. Я решил свою проблему, изменив схему привязки массива как счет на основе нуля и кодируя в других местах данные, которые я вставлял в эти ключи.

Возможно, это будет исправлено в CodeIgniter 3, но для тех, кто еще использует CodeIgniter 2 и проверяет ввод массива из форм с использованием инструментов проверки по умолчанию, следите за этим.

 Смежные вопросы

  • Нет связанных вопросов^_^