Вот мой код контроллера для настройки правил:
// 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 предыдущих адресов:
Код, лежащий в поле Адресная строка 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 не будет работать с массивными входами .
Вот скриншот сразу после проверки:
Как вы можете видеть, хотя он репопулирует форму с правильными значениями, она не применяет к ней правила проверки и, по-видимому, не распознает их существование внутри контроллера.
Что я могу сделать?
Благодаря!
разъем
Похоже, это коммит, о котором говорит Фил: https://github.com/EllisLab/CodeIgniter/commit/5c561805bd9ae6a4ad5d202277c34a879617b683#system/libraries/Form_validation.php
Попробуйте вытащить код из ветви разработки для библиотеки проверки формы и посмотреть, не заботится ли она об этой проблеме.