Очень связано: http://codeigniter.com/forums/viewthread/179581/ По иронии судьбы, пост, который я сделал несколько месяцев назад, был поднят сегодня утром.
Также связан: CodeIgniter: проверка формы с многомерными данными POST
<ignore>
Короче говоря, Codeigniter не очень хорошо обрабатывает индексированные имена полей по умолчанию.
Чтобы просто заполнить ввод и обойтиНедостатки set_value()
, вы можете попробовать что-то вроде этого:
<?php
$value = isset($_POST['house']['dogs'][1]['age']) ? // was the value posted?
form_prep($_POST['house']['dogs'][1]['age']) : // if so, clean it
''; // if not, leave empty
?>
<input name="house[dogs][1][age]" value="<?php echo $value; ?>" />
Поскольку вы, вероятно, используете цикл для их вывода, я не думаю, что это будет слишком сложно.Вы можете заполнить отдельный массив значений и прочитать их вместо этого, если хотите, вы получите идею.set_value()
автоматически запускает form_prep()
, поэтому я добавил его.
Я не слишком уверен насчет проверки.Возможно, вам придется сделать проверку самостоятельно, что, хотя и надоедливо, не должно быть слишком сложным.Помните, что вы всегда можете запустить методы проверки вручную.Пример:
if ($this->form_validation->valid_email($this->input->post('email')) {}
Вы можете просто выбрать легкий путь и изменить имена полей, используя один индекс, например dog_age[]
, который, как я полагаю, облегчит проверку для CI.Желаем удачи, надеясь на исправление на днях в ядре CI.
</ignore>
EDIT : я понятия не имею, как это ускользнуло от меня, но, по-видимому, проверка и set_value должны на самом деле работать, как и ожидалось - не уверен, было ли это недавним изменением или проблема действительно никогда не существовала.Я точно помню, что раньше у меня были проблемы с этим, и связанные посты наводят на мысль, что другие тоже.Проверьте этот ответ, хотя:
CodeIgniter: проверка формы с многомерными данными POST
Я проверил его (работает 2.0.2), и он действительно работает.Я ничего не вижу в журнале изменений , но я проверил это, и это сработало.Убедитесь, что у вас установлена последняя версия, и, возможно, попробуйте еще раз, или дайте нам знать, если я что-то здесь упустил.
Как и В вашем другом ответе сказано, что вам, вероятно, просто нужно явно проиндексироватьимена полей, такие как name="house[dogs][1][name]"
вместо name="house[dogs][][name]"
.