CodeIgniter Forums

Full Version: Twig integration in CI4
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
During the installation of CI4 using Composer, i was happy to see that i could use Composer to install Twig by running " composer require kint-php/kint-twig". I did this and Twig got installed.

Is that enough? Will the CI4 autoload the Twig library?

Thank you in advance.
Yes, it will find it like any other Composer packages you can install.
No, it is not enough. There should be a bridge to CI4's API, but I don't know whether such thing has been developed yet. If you call Twig directly for example, you would not be able to use CI4's features like locating templates, caching, viewcells.
I managed to install the Twig component using Composer without any problem. The problem is that Twig is not integrated. I could integrated Twig easily with CI3 but honestly dont know how to do it CI4. It is so sad that the documentation for CI4 does not cover the installation of its extensions.

Appreciate any help. Thank you.
@ivantcholakov: If you want that tight of connection, you need to develop that yourself. I don't know of any CI4 Twig Parser library. You can take a look on how our View Parser where built an incorporate twig instead.

@murugappan: You can only use it natively as there are no CI4 package to extend it. If you are using Compopser, you can access those libraries directly ( In this case \Twig ). You don't need to include an files. Composer Support

Please see Twig template for CI4 for more information about the matter.
Hi guys,

I found the integration library for twig in the following link
Awesome. Will test it out. Thank you all.

Stay Safe, Stay Free, Stay United.
There are several ways to do this.

In my case, I followed Twig's own documentation.

In the baseController I made the following changes:

PHP Code:

namespace App\Controllers;



BaseController extends Controller
  protected $helpers = [];
  protected $twig;
  * Constructor.
  * @param RequestInterface  $request
  * @param ResponseInterface $response
  * @param LoggerInterface  $logger
  public function initController(RequestInterface $requestResponseInterface $responseLoggerInterface $logger)
= new \Config\Paths();
    $appViewPaths $appPaths->viewDirectory;

    $loader = new FilesystemLoader($appViewPaths);

    $this->twig = new Environment($loader, [
      'auto_reload' => true,
      'cache' => WRITEPATH.'/cache/twig',

In the methods I use to display the views, I simply replace the 'echo view() with '$this->twig->render()'

PHP Code:



You can create a helper or a function if you prefer and even replace the original view () function.

You can see more examples in the documentation

This is what is amazing about this Framework, it offers you several resources, but it does not prevent you from adding other resources.

Congratulations on the incredible work of the team.