проверка формы codeigniter и массивов как имен полей - PullRequest
4 голосов
/ 11 октября 2011

У меня есть набор флажков в моем 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 [] не пусто.

Как мне этого добиться

Ответы [ 2 ]

1 голос
/ 11 октября 2011

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

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

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

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

0 голосов
/ 04 апреля 2013

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

$this->form_validation->set_rules('age', 'age group', 'fnName');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...