I need to join 2 tables in a form, while the child have multiple value. I've trying using callback field, it's working. But I can't catch the records even I use callback_after_insert. Please help me. I'm so confused..
Can anyone help me solve this case?
This is my code:
public function tenaga_kerja() { $c = new grocery_crud(); $c->set_table('tenaga_kerja'); $c->where('id_perusahaan', $this->session->userdata('id_perusahaan')); $this->load->config('grocery_crud'); $this->config->set_item('grocery_crud_file_upload_allow_file_types', 'pdf'); $c->fields('nama_lengkap', 'status', 'jabatan', 'jenjang_pendidikan', 'jurusan_pendidikan', 'file_ijazah', 'sertifikasi'); $c->set_crud_url_path(base_url(strtolower(__CLASS__ . "/" . __FUNCTION__)), base_url(strtolower(__CLASS__ . "/data_tenaga_kerja"))); //field type $c->field_type('id_perusahaan', 'hidden', $this->session->userdata('id_perusahaan')); $c->field_type('status', 'enum', array('Permanen', 'Non Permanen')); $c->set_field_upload('file_ijazah', 'assets/uploads/file_ijazah_tenaga_ahli'); $c->field_type('id_permohonan', 'hidden', $this->session->userdata('id_permohonan')); // set relation $c->set_relation('jenjang_pendidikan', 'ref_jenjang_pendidikan', 'jenjang_pendidikan', null, 'id_jenjang_pendidikan'); $c->callback_field('sertifikasi', array($this, 'callback_sertifikasi')); $c->callback_after_insert(array($this,'callback_before_insert_or_update')); $output = $c->render(); $this->logs(); if ($c->getState() != 'list') { $this->data_tenaga_kerja($output); } else { return $output; } } public function callback_before_insert_or_update($post_array, $primary_key){ //echo '<script> alert('.json_encode($post_array['judul_pelatihan'][1]).'); </script>'; $juduls = $post_array['judul_pelatihan']; $nomors = $post_array['nomor_sertifikat']; $count = count($juduls); $data = array(); for($i=0; $i<$count; $i++) { $data[$i] = array( 'id_tenaga_kerja' => $primary_key, 'id_perusahaan' => $this->session->userdata('id_perusahaan'), 'judul_pelatihan' => $juduls[$i], 'nomor_sertifikat' => $nomors[$i], 'file_sertifikat' => NULL ); } $this->db->insert_batch('sertifikasi_tenaga_kerja', $data); return TRUE; } public function callback_sertifikasi(){ $output = '<script> $(document).ready(function (){ var counter = 2; var limit = 11; '; $output .= '$("#btn_add").click(function(){'; $output .= 'if (counter == limit){ alert("Anda terlalu banyak menambahkan 10 data!"); } '; $output .= 'else {'; $output .= 'var clone1 = $("#cloneObject1").clone(); '; $output .= 'clone1.attr("id","cloneObject" +counter); clone1.empty(); '; $output .= 'clone1.append("<td id='td"+counter+"_1'></td><td id='td"+counter+"_2'></td><td id='td"+counter+"_3'></td><td id='td"+counter+"_4'></td>"); '; $output .= 'clone1.appendTo("#cloneMother"); '; $output .= 'var clone2 = $("#judul_pelatihan1").clone().val(""); clone2.attr("id","judul_pelatihan" +counter); '; $output .= 'clone2.appendTo("#td"+counter+"_1"); '; $output .= 'var clone3 = $("#nomor_sertifikat1").clone().val(""); clone3.attr("id","nomor_sertifikat" + counter); '; $output .= 'clone3.appendTo("#td"+counter+"_2"); '; $output .= 'var clone4 = $("#file_sertifikat1").clone().val(""); clone4.attr("id","file_sertifikat" + counter); '; $output .= 'clone4.appendTo("#td"+counter+"_3"); '; $output .= 'var clone5 = $("#btn_add").clone(); clone5.attr({id: "btn_del"+counter, name:"btn_del", class:"input-del"}); '; $output .= 'clone5.appendTo("#td"+counter+"_4"); counter++; '; $output .= '} }); '; $output .= ''; $output .= '}); </script>'; $output .= '<div class="div-sertifikasi"><table class="tabel-sertifikasi"><thead><tr>'; $output .= '<th class="title-sertifikat">Judul Pelatihan</th>'; $output .= '<th class="title-sertifikat">Nomor Sertifikat</th>'; $output .= '<th class="title-sertifikat">File Sertifikat</th>'; $output .= '<th></th>'; $output .= '</tr></thead>'; $output .= '<tbody id="cloneMother"><tr id="cloneObject1">'; $output .= '<td id="td1_1"><input class="input-sertifikat" type="text" name="judul_pelatihan[]" placeholder="Judul.." id="judul_pelatihan1" required /></td>'; $output .= '<td id="td1_2"><input class="input-sertifikat" type="text" name="nomor_sertifikat[]" placeholder="Nomor.." id="nomor_sertifikat1" /></td>'; $output .= '<td id="td1_3"><input class="input-sertifikat" type="file" name="file_sertifikat[]" placeholder="File" id="file_sertifikat1" /></td>'; $output .= '<td id="td1_4"><input class="input-add" type="button" name="btn_add" id="btn_add" /></td>'; $output .= '</tr></tbody>'; $output .= '</table></div>'; return $output; } function data_tenaga_kerja(){ //multigrid $this->config->load('grocery_crud'); $this->config->set_item('grocery_crud_dialog_forms', true); $this->config->set_item('grocery_crud_default_per_page', 10); $output1 = $this->tenaga_kerja(); $output2 = $this->sertifikasi_tenaga_kerja(); $output3 = $this->jumlah_tenaga_kerja(); $js_files = $output1->js_files + $output2->js_files + $output3->js_files; $css_files = $output1->css_files + $output2->css_files + $output3->css_files; $output = '<h2>1. Daftar Tenaga Kerja Ahli sesuai Bidang Usaha yang dimohon / Quality Assurance / Quality Control (QA/QC)</h2><span style="color:red; font-size:12px">(dilampirkan ijazah terakhir, sertifikat kompetensi, dan riwayat pekerjaan untuk setiap tenaga ahli).</span>' . $output1->output . ' <span style="color:red; font-size:12px">Keterangan: <br/>- Pelatihan yang dicantumkan hanya pelatihan yang berhubungan dengan posisi atau jabatan. <br/>- Untuk warga negara asing, wajib mencantumkan nomor IMTA pada kolom KETERANGAN. <br/></span> <hr/><h2>2. Sertifikasi Tenaga Kerja</h2>' . $output2->output.'<hr/><h2>3. Jumlah Tenaga Kerja</h2>' . $output3->output; $level = $this->session->userdata('level'); if ($level != NULL) { if ($level == 1) { $this->load->view('level1/skt_tabel', (object)array( 'js_files' => $js_files, 'css_files' => $css_files, 'output' => $output )); } else { redirect('hal/dashboard'); } } elseif ($level == NULL) { redirect('hal/logout'); } }