проверка формы codeigniter и массивы в качестве имен полей

#php #forms #codeigniter #checkbox #validation

#php #формы #codeigniter #флажок #проверка

Вопрос:

У меня есть набор флажков в моем HTML, которые выглядят следующим образом,

 div class="grid_7">
                    <fieldset class="age shadow_50">
                        <label class="legend">Age Group</label>
                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="child" />
    <label>Child</label>
</div>

                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="30's" />
    <label>30s</label>
</div>
                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="60's" />
    <label>60's</label>
</div>

                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="teen" />
    <label>Teen</label>
</div>
                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="40's" />
    <label>40's</label>
</div>

                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="70's" />
    <label>70's</label>
</div>
                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="20's" />
    <label>20's</label>
</div>

                            <div class="formRow checkbox">
    <input id="" type="checkbox" name="age[]" value="50's" />
    <label>50's</label>
</div>
                    </fieldset>
                </div>
  

Я установил в своем контроллере правило проверки, которое (на мой взгляд) гарантирует, что флажок установлен,

 $this->form_validation->set_rules('age[]', 'age group', 'required|trim');
  

Однако при тестировании этого я получаю сообщение об ошибке для вечного флажка с именем age[] Я просто хочу проверить, что age[] не является пустым.

Как я могу этого добиться?

Ответ №1:

Вы не можете так тестировать age[] , это массив. Есть несколько способов сделать это, но то, что вы сделали required , не является одним из них.

Вы можете использовать javascript или запустить age[] значение через свою собственную пользовательскую функцию обратного вызова — это один из методов.

Подробная информация об использовании массивов в CI приведена здесь:
https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#arraysasfields

Если вы делаете это по маршруту javascript, вы можете использовать jQuery для перебора ваших флажков (используйте класс, чтобы связать их) и просто убедитесь, что 1 из них отмечен.

Ответ №2:

Старый вопрос, но для тех, кто пытается это сделать, я считаю, что вы можете сделать это, установив правило age , а не age[] , т.е.

 $this->form_validation->set_rules('age', 'age group', 'fnName');