У меня возникли проблемы с преобразованием кода проверки формы в CI 2.0. Я пытаюсь проверить массив флажков, но по какой-то причине проверка не позволяет выполнить обратный вызов или не проверяет.
Как я могу проверить массив флажков так, чтобы был проверен хотя бы один флажок, а значения должны быть одним из параметров (ключ из массива опций)?
РЕДАКТИРОВАТЬ:
Вот лучшее объяснение того, где он меня терпит. Допустим, у меня есть эти поля:
<input type="checkbox" value="1" name="purpose[]" /> <input type="checkbox" value="2" name="purpose[]" />
Я назначил два правила для цели [] – одно из них является обязательным правилом, другое – настраиваемым обратным вызовом, который проверяет, что это значение присутствует в массиве возможных значений.
Если я отредактирую имя поля, выполните следующие действия:
<input type="checkbox" value="1" name="purpose[abc]" />
или даже изменить значение на "", проверка проходит. Он игнорирует требуемое правило и мой пользовательский обратный вызов.
У кого-нибудь есть идея, как справиться с этим?
Массив должен быть передан вашему вызову set_rules с суффиксами с открытием / закрытием квадратных скобок, например:
$this->form_validation->set_rules('checkboxes[]', 'My Checkboxes', 'required');
Более подробная информация содержится в руководстве пользователя CI – http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#arraysasfields
Чтобы обработать проверку значений ваших флажков одним из нескольких значений, вам необходимо создать пользовательскую функцию обратного вызова – http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#callbacks