A Simple and Secure Twig integration for CodeIgniter 3.x
Switch branches/tags
Clone or download

README.md

CodeIgniter Simple and Secure Twig

Latest Stable Version Total Downloads Latest Unstable Version License

This package provides simple Twig integration for CodeIgniter 3.x.

Folder Structure

codeigniter/
└── application/
    └── libraries/
        └── Twig.php

Requirements

  • PHP 5.4.0 or later
  • Twig 1.22.0 or later (Also, simply checked with Twig v2.x)

Installation

With Composer

$ cd /path/to/codeigniter/
$ composer require kenjis/codeigniter-ss-twig

Install libraries/Twig.php to your CodeIgniter application folder:

$ php vendor/kenjis/codeigniter-ss-twig/install.php
  • Above command always overwrites exisiting files.
  • You must run it at CodeIgniter project root folder.

Without Composer

Download the latest Twig v1.x: https://github.com/twigphp/Twig/releases

Unzip and install to application/third_party folder.

Download the latest codeigniter-ss-twig: https://github.com/kenjis/codeigniter-ss-twig/releases

Unzip and copy codeigniter-ss-twig/libraries/Twig.php to application/libraries folder.

Remove comment marks below and fix the path for Autoloader.php:

--- a/libraries/Twig.php
+++ b/libraries/Twig.php
@@ -9,10 +9,8 @@
  */
 
 // If you don't use Composer, uncomment below
-/*
 require_once APPPATH . 'third_party/Twig-1.xx.x/lib/Twig/Autoloader.php';
 Twig_Autoloader::register();
-*/
 
 class Twig
 {

Usage

Loading Twig Library

$this->load->library('twig');

You can override the default configuration:

$config = [
	'paths' => ['/path/to/twig/templates', VIEWPATH],
	'cache' => '/path/to/twig/cache',
];
$this->load->library('twig', $config);

Rendering Templates

Render Twig template and output to browser:

$this->twig->display('welcome', $data);

Above code renders views/welcome.twig.

Note: I've changed the method name from render() to display(). Now render() method returns string only.

Render Twig template:

$output = $this->twig->render('welcome', $data);

Above code renders views/welcome.twig.

Adding a Global Variable

$this->twig->addGlobal('sitename', 'My Awesome Site');

Getting Twig_Environment Instance

$twig = $this->twig->getTwig();

Supported CodeIgniter Helpers

  • base_url
  • site_url
  • anchor
  • form_open
  • form_close
  • form_error
  • form_hidden
  • set_value

Some helpers are added the functionality of auto-escaping for security.

Adding Your Functions

You can add your functions with configuration:

$config = [
	'functions' => ['my_helper'],
	'functions_safe' => ['my_safe_helper'],
];
$this->load->library('twig', $config);

If your function explicitly outputs HTML code, you will want the raw output to be printed. In such a case, use functions_safe, and you have to make sure the output of the function is XSS free.

Reference

Documentation

Samples

How to Run Tests

$ cd codeigniter-ss-twig
$ composer install
$ phpunit

Other Twig Implementations for CodeIgniter 3.x

Related Projects for CodeIgniter 3.x