Membuat dan menggunakan helper untuk mengelola layout/ template di CodeIgniter 4

Di musim WFH ini ada banyak orang mengisi waktu dirumah dengan berbagai macam aktifitas, pekerjaan, waktu bersama keluarga dan lain sebagainya. Saya sendiri menyempatkan sebagian waktu saya untuk mendalami CodeIgniter 4 dan DevOps. Target saya, dua bulan ini seharusnya sudah bisa membuat saya membiasakan diri dengan teknologi ini.

Hari-hari biasa dengan kesibukan aktifitas kantor membuat saya belum tentu bisa memperdalam skill baru, karena dibanding belajar hal baru yang saya ingini saya tentu lebih memprioritaskan pekerjaan. Ya tetep belajar teknologi baru sih, terutama kalo teknologi baru itu digunakan dalam pekerjaan.

Well, balik lagi ke pembahasan kita akan ngobrolin soal CodeIgniter 4. Terutama helper. Kalau teman-teman sudah menggunakan CI3 tentu dengan helper sudah faham dan endak perlu dijelaskan lagi.

Dan sebenarnya penggunaan helper di CI 4 sama saja kok dengan CI3, endak ada bedanya. Mungkin hanya di waktu me-load nya saja yang ada banyak cara dan variasi itu beda sama yang ada di CI 3.

Kali ini kita akan coba membuat helper baru, yang berfungsi untuk melakukan pembagian layout atau templating yang sangat mempermudah kita dalam proses development.

Membuat Helper

Untuk membuat helper, teman-teman bisa membuat file baru di dalam /app/Helpers dan seperti biasanya, nama nya harus dikasih embel-mbel _helper. Misalnya nama helpernya render, berarti nama file nya menjadi render_helper.php.

Di dalam file tersebut, beri kode seperti dibawah ini:

<?php

if ( ! function_exists('render'))
{
    function render(string $name, array $data = [], array $options = [])
    {
        return view(
            '_layouts/layout_fo',
            [
                'content' => view($name, $data, $options),
            ],
            $options
        );
    }
}

dari kode diatas yang perlu teman-teman perhatikan adalah ketika fungsi render dibuat, dia membutuhkan beberapa parameter yang nanti mungkin digunakan untuk menampilkan baik view maupun data.

Misalnya, string $name digunakan sebagai view content, dan $data digunakan sebagai parameter data yang akan ditampilkan.

Selain itu yang perlu teman-teman sesuaikan adalah path _layout/layout_fo yang saya buat untuk keperluan saya, dengan path layout teman-teman.

Autoload helper

Setiap fungsi atau service yang kita buat harus di load terlebih dahulu agar bisa digunakan. Ada kasus lain dimana sebuah service kita gunakan terus menerus, sehingga akan merepotkan kalau setiap kali mau menggunakan harus meload terlebih dahulu, sehingga langkah terbaiknya adalah mengkonfigurasi service tersebut dengan autoload.

Kali ini kita melakukan autoload render_helper dengan post_controller_constructor pada app/Config/Events.php dan tambahkan skrip berikut:

/*render layout helper*/
Events::on('post_controller_constructor', function() {
    helper('sys');
});

/*end render layout helper*/

Penggunaan

Itu semua sudah selesai. Sekarang teman-teman sudah bisa untuk menggunakan helper tersebut. Lagi-lagi, untuk penggunaanya tidak ada yang berbeda dengan CI3. Kita hanya perlu memanggil fungsinya langsung, misalnya nama_fungsi();

Kasus ini, helpernya berfungsi untuk menampilkan view. Sehingga, kita gunakan helper render inin untuk menggantikan fungsi view saat kita ingin menampilkan view. Di controller Home akan menjadi:


public function index()
{
    return render('/v_home_index');
}

yang berarti kita menampilkan v_home_index sebagai content.

Thanks banget buat mas Abdul Malik Iksan yang uda ngasih references ini, semoga semuanya bisa mendapat manfaatnya.

Video