Я пытаюсь создать форму, которая содержит эти многомерные массивы:
<input type="text" name="cost[1][desc]">
<input type="text" name="cost[1][price]">
<input type="file" name="cost[1][file]">
<input type="text" name="cost[2][desc]">
<input type="text" name="cost[2][price]">
<input type="file" name="cost[2][file]">
В каждом массиве 'cost' есть три входа: описание, цена и загрузка файла.Может быть несколько массивов 'cost' (вот почему я сделал второй параметр числом).В моей модели CodeIgniter у меня есть это:
foreach($_POST as $post => $array){
if($post=='cost') {
foreach($array as $number){
foreach($number as $label => $value){
if($label=='file'){
$config['upload_path'] = './uploads/receipts';
$config['allowed_types'] = 'gif|jpg|png|doc|docx|pdf';
$config['max_size'] = '4096';
if(!empty($value['name'])){
$this->upload->initialize($config);
if($this->upload->do_upload($label)){
$file = $this->upload->data();
$path = $file['file_name'];
}
}
}
$cost_array = array('desc'=>$number['desc'],'price'=>$number['price'],'file'=>$path);
$price = number_format($number['price'],2);
}
$main_array[] = $cost_array;
$main_price[] = $price;
}
}
}
$data['cost_info'] = serialize($cost_array);
$data['extra_cost'] = array_sum($price);
$this->db->insert('reports',$data);
Значения 'desc' и 'price' входят в массив (и сериализуются) вообще без проблем - но по какой-то причине я не могу получить какие-либоинформация о файлеЯ удалил много операторов if, чтобы понять, была ли это проблема, но это не так.Если я изменил входной HTML-тег файла так, чтобы его имя было «cost_1_file», и если я изменил модель PHP на:
if($this->input->post('cost_1_file')==''){
echo 'Nope';
}
, он повторяет утверждение - это означает, что он не получает никаких данных о загрузке файласовсем.Я удостоверился, что моя форма form_open_multipart
.Кто-нибудь знает, где я иду не так?