Integration Codeigniter 4 and Smarty Template Engine

v1.0.0 2022-04-16 09:46 UTC

This package is auto-updated.

Last update: 2024-02-16 14:03:36 UTC


Integration Codeigniter 4 and Smarty Template Engine


  • PHP 7.3+, 8.0+
  • CodeIgniter 4.0.4+
  • Smarty 4.1.0+


Installation is best done via Composer. Assuming Composer is installed globally, you may use the following command:

> composer require maheswara/ci4smarty

Manual Installation

Otherwise you can install manually:

  1. Download smarty and ci4smarty and put in app/ThirdParty folder

  2. Edit and add this line on app/Config/Autoload.php

     public $psr4 = [
         'Ci4Smarty'   => APPPATH . 'ThirdParty/ci4smarty-1.0.0/src'
     public $classmap = [
         'Smarty'   => APPPATH . 'ThirdParty/smarty-4.1.0/libs/Smarty.class.php',


The easy way to implement this, is by extends your controller from SmartyController.

use Ci4Smarty\Controllers\SmartyController;

class BaseController extends SmartyController{


You can override config by adding file SmartyConfig.php to app/Config folder and change it

    namespace Config;
    use CodeIgniter\Config\BaseConfig;
    class SmartyConfig extends BaseConfig
        public static $fileExtension = '.tpl';
        public static $templateDir = APPPATH . 'Views';
        public static $compileDir = WRITEPATH . 'templates_c';
        public static $cacheDir = WRITEPATH . 'caches';
        public static $configDir = APPPATH . 'Views/configs';


This is the features:

  • Auto render template base on Controller class and method like: home/index or if url segment is under folder like: admin/dashboard/index
  • You can also render manually: $this->render('home/index'); or $this->render('home/index', $data); where $data is array or object
  • If you like to change layout you can add $this->setLayout('layout'); before render, and add {$content} in the layout file as a container of rendered template
  • You can also use smarty {extend} syntax to implement your layout
  • You can stop render by $this->setRendered(true); if you want to debug or print_r your code and eliminate the default exception;
  • Don't forget the extension of each template file is .tpl (smarty)