Tutorial Mengintegrasikan Codeigniter 4 dengan Smarty 3

Smarty merupakan template engine yang memudahkan kita dalam mengelola template layout di dalam projek kita. banyak fitur-fitur yang tersedia di smarty diantaranya yang paling membantu saya dalam pengerjaan proyek yaitu fitur cache. Fitur cache ini sangat membantu meringankan beban server ketika banyak user yang membuka halaman aplikasi/website secara bersamaan. Ketika aplikasi berskala kecil mungkin fitur cache ini tidak akan begitu terasa manfaatnya, tetapi berbeda kasusnya ketika proyek aplikasi kita diakses oleh banyak user dalam waktu bersamaan.

Codeigniter adalah framework PHP yang sangat powerfull, ringan dan minim konfigurasi,  sangat cocok untuk programmer pemula yang baru belajar bahasa pemograman PHP. Codeigniter sendiri sudah memiliki template engine nya tersendiri, tetapi saya memilih template engine smarty dikarnakan banyak fitur yang disediakan oleh smarty dibandingkan template engine bawaan (builtin) Codeigniter.

Apabila Anda ingin mengggunakan template engine smarty di Codeigniter 4, silahkan ikuti langkah-langkahnya di bawah ini:

Step-1. Unduh Smarty

Ada dua cara untuk mengunduh smarty keprojek kita, cara pertama adalah download smarty langsung dari websitenya disini, dan cara yang kedua adalah dengan composer. Apabila komputer Anda belum terpasang Composer, silahkan untuk mengikuti langkah-langkah menginstall composer disini. Apabila Anda sudah menginstall composer silahkan ketikan di console/terminal :

composer require smarty/smarty

Perintah di atas akan menginstall librari smarty dan menyimpan file nya di folder vendor/smarty.

Step-2. Ekstrak File Smarty

Apabila Anda sudah mengunduh smarty, silahkan untuk mengekstrak ke folder root/app/ThirdParty/Smarty. Untuk pemasangan via Composer Anda tidak perlu mengekstraknya ke folder ThirdParty dikarnakan file smarty sudah siap dipakai yang terletak di folder vendor/smarty.

Step-3. Membuat Folder Cache

Langkah selanjutnya yang harus Anda perhatikan adalah membuat folder cache. Folder cache ini sangat penting dikarnakan template engine smarty akan membuat cache template terlebih dahulu sebelum ditampilkan di halaman web. Silahkan buat folder cache berikut ini :

writable/smarty/cache
writable/smarty/template_c

Step-4. Membuat File Library CI4Smarty

Untuk membuat template engine smarty dapat berjalan di codeigniter 4, kita harus membuat librari smarty terlebih dahulu, kita namai librari tersebut dengan CI4Smarty. silahkan buat file CI4Smarty.php di folder app/Libraries/CI4Smarty.php kemudian salin kode di bawah ini :

namespace App\Libraries;

require_once APPPATH.'ThirdParty/Smarty/Autoloader.php';

use \Smarty_Autoloader;

Smarty_Autoloader::register();

use \Smarty;

class CI4Smarty extends Smarty {

    public function __construct()
    {
        parent::__construct();
       
        parent::setTemplateDir(APPPATH . 'Views/');
        parent::setCompileDir(WRITEPATH . 'smarty/templates_c/')->setCacheDir(WRITEPATH . 'smarty/cache/');
       
    }

    public function view($tpl_name) {
        if (substr($tpl_name, -4) != '.tpl'){
            $tpl_name.='.tpl';
        }

        parent::display($tpl_name);
    }
}

Step-5. Menambahkan Service CI4Smarty

Silahkan tambahkan kode di bawah ini ke file app/Config/Services.php

namespace Config;

use CodeIgniter\Config\Services as CoreServices;
use CodeIgniter\Config\BaseConfig;
use Config\App;
use App\Libraries\CI4Smarty;

require_once SYSTEMPATH . 'Config/Services.php';

class Services extends CoreServices
{
    public static function SmartyEngine($getShared = true){
        return ($getShared === true ? static::getSharedInstance('SmartyEngine') : new CI4Smarty());
    }
};

Step-6. Test

Apabila Anda sudah mengikuti langkah-langkah di atas dengan benar, selanjutnya Anda dapat mencoba membuat file template smarty di folder app/Views/welcome_message.tpl kemudian salin kode di bawah ini:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Halo, Smarty!</title>
</head>
<body>
	<h1>Halo Smarty!</h1>
</body>
</html>

Ubah file Controller di app/Controllers/Welcome.php menjadi seperti di bawah ini:

namespace App\Controllers;

class Home extends BaseController
{
	public function index()
	{
		return service('SmartyEngine')->view('welcome_message.tpl');
	}
}

Terakhir silahkan cek di browser Anda dengan mengakses URL http://domainanda/home. Apabila halaman muncul, maka selamat Anda telah berhasil mengintegrasikan template engine smarty dengan codeigniter 4.

Apabila halaman tidak muncul dan memperlihatkan halaman erorr, maka Anda dapat mengecek kembali kode diatas, apakah sudah sesuai dengan yang seperti dicontohkan di atas apakah belum. Apabila masih memunculkan eror silahkan untuk bertanya di kolom komentar.

Sekian untuk artikel kali ini, semoga bermanfaat. salam.

Sumber : https://forum.codeigniter.com/thread-76323.html