Code Igniter 4 - Create, Read, Update & Delete ( Crud Data Karyawan )

 


Code Igniter 4 - Framework PHP, Siapa Yang saat ini tidka kenal dengan framework ini. perkembangan yang sangat membantu kita untuk mempelajari framework ini.

Kali ini saya ingin share kepda teman-teman, Tentang cara membuat Create, Read, Update & Delete pada code igniter 4 ini, dengan contoh kasus ( Crud Data Karyawan ).

Sebelum memulainya, kita sudah harus intall terlebih dahulu harus install beberapa aplikasi :


1. XMPP
2. Visual Studio Code
3. compoeser
4. Git Bash

 Visual Code extension :
1. Intelephense
2. Prittier
3. Snippet

* Visual Studio Extension php intelephense  ( Berfungsi untuk menunjukkan kesalahan pada source kita nanti.

* Visual Studio Extension Prittier ( Berfungsi untuk merapikancodingan kita secara otomatis )

* Visual Studio Extension Snippet ( Berfungsi untuk mempermudah kita dalam penulisan script )

Seeting Snippet :

* File -> Presensi -> User Snippet

* Buat new snippet

* Bikin html.json

{
  "PHP Tag": {
    "prefix""php",
    "body""<?php $1 ?>"
  },
  "Inline Echo": {
    "prefix""phpp",
    "body""<?= $$1; ?>"
  }
}


* save filenya

A. Isntalasi Code Igniter

* Instalasi code igniter 4 di htdoc kita :

cara installnya buka website code igniter pilih code igniter 4.
pilih document ( userguidenya igniter )

* pilih installasion
* klik composer instalasion
* ketikkan di script yang ada di situ

* pilih yang --no-dev ( biar file lebih kecil )
* klo yang di atas scriptnya dia lebih full dan filenya lebih besar.

* klo installasi sudah selesai. kita jalankan apakah sudah selesai instalasi ini.

*kita buka di gitbash yang kita intall tadi, posisikan di folder htdoc ketikkan php spark serve untuk menlajankannya.

 


 

 

B. Membuat Crud Data Karyawan

Silahkan kita install ci4 dulu di bagian xampp/htdoc/ :

composer create-project codeigniter4/appstarter crudkaryawan --no-dev

 Kita Buat Views nya terlebih dahulu

nama filenya : home.php

<?= $this->extend('layout/template'); ?>

<?= $this->section('content'); ?>
<div class="container">
    <div class="row">
        <div class="col-md-12" style="margin-top: 50;">
            <center><img src="/img/1.png" width="200" height="200" alt=""></center>
        </div>
        <div class="col-md-12">
            <ul class="list-group">
                <li class="list-group-item">
                    <center>
                        <marquee behavior="left" direction="">Selamat Datang Diaplikasi Pengolahan Data Karyawan
</marquee>
                    </center>
                </li>
            </ul>
        </div>
    </div>
</div>

<?= $this->endSection(); ?>

Controllernya Karyawan.php :


<?php

namespace App\Controllers;

use App\Controllers;
use App\Models\KaryawanModel;

class Karyawan extends BaseController
{
    protected $karyawanModel;
    public function __construct()
    {
        $this->karyawanModel = new KaryawanModel();
    }

    // ini method index awalnya namanya guys 
    public function index()
    {
        $data = [
            'title' => 'Home | CV.OJOLPROGRAM'
            // 'data_kar' => $this->KaryawanModel->getKaryawan();

        ];

        return view('karyawan/home', $data);
    }

    // ini method about namanya guys 
    public function data()
    {
        // $karyawan = $this->karyawanModel->findAll();

        $data = [
            'title' => 'Data Karyawan',
            'karyawan' => $this->karyawanModel->getKaryawan()

        ];

        return view('karyawan/data', $data);
    }

    public function detail($nama)
    {
        $data = [
            'title' => 'Detail Karyawan',
            'karyawan' => $this->karyawanModel->getKaryawan($nama)
        ];

        //jika komik tidak ada di tabel

        if (empty($data['karyawan'])) {
            throw new \CodeIgniter\Exceptions\PageNotFoundException('Nama Karyawan' . $nama . ' tidak ditemukan. ');
        }

        return view('karyawan/detail', $data);
    }

    // ini method contac namanya guys 
    public function cetak()
    {
        $data = [
            'title' => 'Concact US',
            'alamat' => [
                [

                    'tipe' => 'Rumah',
                    'alamat' => 'Sungai Pinang Bungo Dani',
                    'kota' => 'Bungo'
                ],
                [
                    'tipe' => 'Kantor',
                    'alamat' => 'Sungai Pinang Bungo Dani',
                    'kota' => 'Bungo'
                ]
            ]
        ];
        return view('karyawan/cetak', $data);
    }

    public function create()
    {
        //session();
        $data = [
            'title' => 'Form Tambah Data Karyawan',
            'validation=' => \Config\Services::validation()
        ];

        return view('karyawan/create', $data);
    }

    public function save()
    {
        //untuk pengetahuan lebihnya baca di userguide code igniter wajib
        // validasi input
        if (!$this->validate([
            'nama' => [
                'rules' => 'required|is_unique[data_kar.nama]',
                'errors' => [
                    'required' => '{field} Nama harus di isi.',
                    'is_unique' => '{field} Nama sudah terdaftar'
                ]
            ],
            'ttl' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} TTL harus di isi'
                ]
            ],
            'departemen' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} departemen harus di isi'
                ]
            ],
            'jabatan' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} jabatan harus di isi'
                ]
            ],
            // 'sampul' => 'uploaded[sampul]'
            'foto' => [
                'rules' => 'max_size[foto,1024]|is_image[foto]|mime_in[foto,image/jpg,image/jpeg,image/png]',
                'errors' => [
                    'max_size' => 'Ukuran gambar terlalu besar',
                    'is_image' => 'Yang kalian pilih bukan gambar',
                    'mime_in' => 'Yang kalian pilih bukan gambar',
                ]
            ],

            'email' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} Email harus di isi'
                ]
            ],
            'no_hp' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} No Hp harus di isi'
                ]
            ]
        ])) {

            // $validation = \Config\Services::validation();
            // return redirect()->to('/komik/create')->withInput()->with('validation', $validation);
            return redirect()->to('/karyawan/create')->withInput();
        }

        // ambil gambar yang di inputkan tadi
        $fileFoto = $this->request->getFile('foto');
        // apakah tidak ada gambar nama yang di upload
        if ($fileFoto->getError() == 4) {
            $namaFoto = 'default.png';
        } else {
            $namaFoto = $fileFoto->getRandomName();
            // pindahkan file ke folder img
            $fileFoto->move('img'$namaFoto);
        }
        // // generate nama sampul random
        // $namaSampul = $fileSampul->getRandomName();
        // // dd($fileSampul); ( untuk cek gambarnya udah bisa blom)

        // // pindahkan file gambartadi ke folder yang kita inginkan
        // $fileSampul->move('img', $namaSampul);
        // // ambil nama file
        // // $namaSampul = $fileSampul->getName();



        // dd($this->request->getVar());
        // Script di atas untuk cek apakah data sudah terpanggil atau belom
        // $slug = url_title($this->request->getVar('judul'), '-', true);
        $this->karyawanModel->save([

            'nama' => $this->request->getVar('nama'),
            'ttl' => $this->request->getVar('ttl'),
            'departemen' => $this->request->getVar('departemen'),
            'jabatan' => $this->request->getVar('jabatan'),
            'foto' => $namaFoto,
            'email' => $this->request->getVar('email'),
            'no_hp' => $this->request->getVar('no_hp'),

        ]);


        session()->setFlashdata('pesan''Data Berhasil Ditambahkan.');

        return redirect()->to('/karyawan/data');
    }

    public function delete($id)
    {
        // cari gambar berdasarkan id
        $karyawan = $this->karyawanModel->find($id);

        // cek jika file gambarnya default
        if ($karyawan['foto'!= 'default.png') {
            // hapus gambar
            unlink('img/' . $karyawan['foto']);
        }

        $this->karyawanModel->delete($id);
        session()->setFlashdata('pesan''Data Berhasil dihapus.');
        return redirect()->to('/karyawan/data');
    }

    public function edit($nama)
    {
        $data = [
            'title' => 'Form Update Data Komik',
            'validation=' => \Config\Services::validation(),
            'data_kar' => $this->karyawanModel->getKaryawan($nama)
        ];

        return view('karyawan/edit', $data);
    }

    public function update($id)
    {
        // cek judul dulu
        $karyawanLama = $this->karyawanModel->getKaryawan($this->request->getVar('nama'));
        if ($karyawanLama['nama'== $this->request->getVar('nama')) {
            $rule_judul = 'required';
        } else {
            $rule_judul = 'required';
        }

        if (!$this->validate([
            'nama' => [
                'rules' => $rule_judul,
                'errors' => [
                    'required' => '{field} Nama harus di isi.',
                    'is_unique' => '{field} Nama sudah terdaftar'
                ]
            ],
            'ttl' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} TTL harus di isi'
                ]
            ],
            'departemen' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} departemen harus di isi'
                ]
            ],
            'jabatan' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} jabatan harus di isi'
                ]
            ],
            // 'sampul' => 'uploaded[sampul]'
            'foto' => [
                'rules' => 'max_size[foto,1024]|is_image[foto]|mime_in[foto,image/jpg,image/jpeg,image/png]',
                'errors' => [
                    'max_size' => 'Ukuran gambar terlalu besar',
                    'is_image' => 'Yang kalian pilih bukan gambar',
                    'mime_in' => 'Yang kalian pilih bukan gambar',
                ]
            ],

            'email' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} Email harus di isi'
                ]
            ],
            'no_hp' => [
                'rules' => 'required',
                'errors' => [
                    'required' => '{field} No Hp harus di isi'
                ]
            ]
        ])) {

            // $validation = \Config\Services::validation();
            return redirect()->to('/karyawan/edit/' . $this->request->getVar('nama'))->withInput();
        }

        // ambil file sampulnya
        $fileFoto = $this->request->getFile('foto');
        // cek gambar. apakah btetap gambar lama
        if ($fileFoto->getError() == 4) {
            $namaFoto = $this->request->getVar('fotoLama');
        } else {
            // generatge nama file random 
            $namaFoto = $fileFoto->getRandomName();
            // pindahkan gambar/ upload gamabr
            $fileFoto->move('img'$namaFoto);
            // hapus file yang lama
            unlink('img/' . $this->request->getVar('fotoLama'));
        }

        // dd($this->request->getVar());
        $nama = url_title($this->request->getVar('nama'), '-', true);
        $this->karyawanModel->save([
            'id' => $id,
            'nama' => $this->request->getVar('nama'),
            'ttl' => $this->request->getVar('ttl'),
            'departemen' => $this->request->getVar('departemen'),
            'jabatan' => $this->request->getVar('jabatan'),
            'foto' => $namaFoto,
            'email' => $this->request->getVar('email'),
            'no_hp' => $this->request->getVar('no_hp')

        ]);


        session()->setFlashdata('pesan''Data Berhasil Diubah.');

        return redirect()->to('/karyawan/data');
    }

    //-------------------------------------------------------------------- 

}



Modelnya KaryawanModel.php :


<?php

namespace App\Models;

use CodeIgniter\Model;

class KaryawanModel extends Model
{
    protected $table = 'data_kar';
    // protected $useTimestamps = true;
    protected $allowedFields = ['nama''ttl''departemen''jabatan''foto''email''no_hp'];

    public function getKaryawan($nama = false)
    {
        if ($nama == false) {
            return $this->findAll();
        }

        return $this->where(['nama' => $nama])->first();
    }
}



Untuk Lebih Lengkapnya :

Teman-teman bida download disini :

Crud data Karyawan





Subscribe to receive free email updates:

0 Response to "Code Igniter 4 - Create, Read, Update & Delete ( Crud Data Karyawan )"

Posting Komentar