Insert &
Validation
w/ AJAX
PTIK UNS - 2022
Insert Data W/ Ajax
Konsepnya mirip dengan insert seperti biasa, bedanya:
Form ditampilkan dalam bentuk modal
Penggunaan ajax dalam pemanggilan modal
Server-side datatables
Tabel User - Database
Apply Datatables
Datatables, sebuah library open source pembuatan tabel yang dapat diakses di
https://datatables.net
Download dan letakkan datatables pada folder public
Apply Datatables
Tambahkan css dari Datatables di bagian head
Tambahkan javascript dari Datatables pada bagian footer sebelum close tag </html>
Ambil id tersebut dengan JQuery, lalu terapkan datatables melalui script. Letakkan di bagian
bawah sendiri view user/index.php, sebelum endSection();
<script>
$(document).ready(function() {
$('#datatabel').DataTable();
});
</script>
Kalau ada yang gagal, kemungkinan karena belum manggil jQuery
Method Get Data Anggota- Controller
Tambahkan sebuah method bernama getdata() pada controller user.
Getdata() berfungsi untuk menerima request ajax dan mengembalikan nilai view dalam format
json
public function getdata()
{
if ($this->request->isAJAX()) {
$userModel = new UserModel();
$data = [
'list' => $userModel->findAll()
];
$hasil = [
'data' => view('user/list', $data)
Jangan lupa pada routes tambahkan route berikut.
];
$routes->get('/user/data', 'admin\user::getdata');
echo json_encode($hasil);
} else {
exit('Data tidak dapat diload');
}
Membuat List Anggota - View
Buat sebuah view bernama list.php di dalam folder admin/user/.
List.php berfungsi untuk menampilkan data anggota dalam bentuk tabel HTML.
<script>
$(document).ready(function() {
$('#datatabel').DataTable();
});
</script>
Tambah Ajax Script - View
Ajax digunakan untuk memanggil method getdata dari controller user.
Apabila berhasil, maka id viewdata akan menampilkan response parameter berupa data.
$(document).ready(function() {
tampilkan();
});
</script>
Run, maka sampai tahap ini seharusnya
tampilannya sama dengan awal.
Jika tidak, maka ulangi penulisan kode.
Membuat Div Modal
Pada view user, tambahkan div dengan id =“viewmodal” (Setelah tag <container> atau
semacamnya)
Pastikan display style bernilai : none agar tidak tampil ketika halaman diload
..........
<div id="viewmodal" style="display:none;"></div>
...................
Membuat Button Modal
Tambahkan tombol tambah data di dalam user/list.php dengan id=“tambah”
Untuk memudahkan penulisan kode, silakan sadur form yang pernah dibuat pada pertemuan
lalu
<div class="modal fade" id="formmodal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="btn-close" data-mdb-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">...</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-mdb-dismiss="modal">
Close
</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>Tam
Tambah Ajax Script - View
Ajax digunakan untuk memanggil method getForm() dari controller user apabila button
tambah di klik.
Apabila berhasil, maka id viewmodal akan menampilkan response parameter berupa data dan
merubah class hidden menjadi show.
Id formmodal juga akan ditampilkan.
$('#tambah').click(function(e) {
e.preventDefault();
$.ajax({
url: "<?= base_url('/user/form') ?>",
dataType: "json",
success: function(response) {
$('#viewmodal').html(response.data).show();
$('#formmodal').modal('show');
}
});
})
Mempersiapkan Form - View
Form diberikan id “form” sebagai penanda objek yang akan ditangkap oleh ajax.
Buat method insertAjax() yang berisi sama persis dengan insert() pada controller user.
Validasi dari sisi Codeigniter dapat dilakukan dengan menggunakan service validation();
$validasi = \Config\Services::validation();
Disclaimer : Validasi disini digunakan pada AJAX, untuk validasi pada page, bisa gunakan
fungsi redirect()->withInput()->with(‘validation’,’’) dan penambahan class invalid dengan
$validasi->hasError()
Validasi di Method InsertAjax - Controller
Kembali ke method insertAjax() di controller user, tambahkan validasi pada nama depan.
$validasi = \Config\Services::validation();
$valid = $this->validate([
'namadepan' => [
'label' => 'Nama Depan',
'rules' => 'required',
'errors' => [
'required' => '{field} tidak boleh kosong'
]
]
]);
(cek: https://www.codeigniter.com/userguide3/libraries/form_validation.html#rule-reference )
Errors merupakan custom error message yang muncul ketika terdapat kesalahan pengisian field.
Validasi di Method InsertAjax - Controller
Cek apakah inputan valid, jika tidak maka akan memunculkan pesan “error” dalam format json.
Jika sudah valid, maka isikan titik-titik tersebut dengan perintah insert data seperti pada method insert(),
lalu tambahkan pesan “sukses” dalm format json
if (!$valid) {
$pesan = [
'error' => [
'namadepan' => $validasi->getError('namadepan')
]
];
echo json_encode($pesan);
} else {
......................
$pesan = [
'sukses' => 'Data anggota berhasil diinput'
];
echo json_encode($pesan);
}
Validasi di Ajax - View
Pada field yang akan diberikan pesan error validasi, berikan ID=“nd” / sesuai dengan nama ID yang
dikehendaki
Di bawah field yang akan diberikan label error validasi, tambahkan sebuah div kosong dengan kelas
“invalid-feedback” dan berisi ID “errornd” / sesuai dengan yang dikehendaki.
<div class="col">
<label class="form-label" for="nd">Nama depan</label>
<input type="text" id="nd" name="namadepan" class="form-control" />
<div class="invalid-feedback" id="errornd"></div>
</div>
Validasi di Ajax - View
Pada proses ajax, pada view form.php, edit kode pada status success.
Variabel respon melakukan parsing JSON terhadap data yang diterima. (jika menggunakan json_encode())
Jika terdapat error, maka pada id #errornd edit pesan error sesuai dengan yang di tulis di controller.
success: function(response) {
var respon = JSON.parse(response);
if (respon.error) {
if (respon.error.namadepan) {
$('#nd').addClass('is-invalid');
$('#errornd').html(respon.error.namadepan);
} else {
$('#nd').removeClass('is-invalid');
$('#errornd').html('');
}
} else {
alert(respon.sukses);
$('#formmodal').modal('hide');
tampilkan();
}
Cobalah beberapa kali testing memasukkan data kosong.
Deliverable:
dokumentasi cara dan screenshot
atau
video tutorial