Я делаю это неправильно, или есть ошибка в библиотеке проверки формы CodeIgniter при использовании массивов в качестве имен полей? - PullRequest
5 голосов
/ 15 сентября 2011

Вот мой код контроллера для настройки правил:

// Previous address(es)         
$this->form_validation->set_rules('prev_house_number[]',    'House Number',     'trim|alpha_numeric');
$this->form_validation->set_rules('prev_abode[]',           'Abode',            'trim');
$this->form_validation->set_rules('prev_house_name[]',      'House Name',       'trim');
$this->form_validation->set_rules('prev_address_line_1[]',  'Address Line 1',   'required|trim');
$this->form_validation->set_rules('prev_address_line_2[]',  'Address Line 2',   'trim');
$this->form_validation->set_rules('prev_city[]',            'Town/City',        'required|trim');
$this->form_validation->set_rules('prev_county[]',          'County',           'trim');
$this->form_validation->set_rules('prev_postcode[]',        'Postcode',         'required|max_length[9]|trim');
$this->form_validation->set_rules('prev_country[]',         'Country',          'trim');
$this->form_validation->set_rules('prev_months[]',          'Previous Months',  'trim|integer');
$this->form_validation->set_rules('prev_years[]',           'Previous Years',   'trim|integer');

Пользователь может ввести до 5 предыдущих адресов, например:

Form validation

код за полем адресной строки 1 выглядит следующим образом:

<div class="input w100 f-left c-none">
    <input type="text" class="address_line_1 postcode_prev_address_1" id="prev_address_line_1[]" name="prev_address_line_1[]" value="<?php echo set_value('prev_address_line_1[]');?>"/>
    <label for="prev_address_line_1[]">Address Line 1 <span class="required">*</span></label>
</div>

Вот проблема: Если предположить, что у меня введено 5 адресов, и в форме проверка не пройдена, все пять областей ввода будутправильно заселена, как и ожидалось. Однако проверка CodeIgniter не будет работать с массивными входами .

Вот прямой снимок экрана после проверки:

form validation fail

Как видите,хотя он заполняет форму правильными значениями, он не применяет к ним правила проверки и, похоже, не распознает их существование внутри контроллера.

Что я могу сделать?

Спасибо!

Джек

1 Ответ

2 голосов
/ 17 сентября 2011

Похоже, это коммит, о котором говорит Фил: https://github.com/EllisLab/CodeIgniter/commit/5c561805bd9ae6a4ad5d202277c34a879617b683#system/libraries/Form_validation.php

Попробуйте вытащить код из ветви разработки для библиотеки проверки формы и посмотрите, решает ли он проблему.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...