devknown/twig-import-function

Call (almost) any PHP function from your Twig (v3) templates.

1.0.0 2022-07-02 01:54 UTC

This package is auto-updated.

Last update: 2024-05-30 00:48:22 UTC


README

Build Status License

Call (almost) any PHP function from your Twig (v3) templates.

Requirements

PHP 7.3 and later. Twig 3.x

Composer

You can install the bindings via Composer. Run the following command:

composer require devknown/twig-import-function

To use the bindings, use Composer's autoload:

require_once('vendor/autoload.php');

Manual Installation

If you do not wish to use Composer, you can download and include the ImportFunctionExtension.php file.

require_once('./src/Devknown/Twig/Extension/ImportFunctionExtension.php');

Getting Started

Simple usage looks like:

// 1. Setup twig 3.x
$loader = new \Twig\Loader\FilesystemLoader('/path/to/template');
$twig = new \Twig\Environment($loader);

// 2. Load extension
$extension = new \Devknown\Twig\Extension\ImportFunctionExtension();

// 3. Import a function
$extension->import('uniqid');

// -> Or multiple functions
function my_custom_function($name) {
    echo "Your name is: " . $name;
}
$extension->import(['uniqid', 'file_exists', 'my_custom_function']);
// Note: in this example, the 'my_custom_function..' must be accessible globally 

// 4. Add extension
$twig->addExtension($extension);

// 5. Render as normal
echo $twig->render('home.html', ['the' => 'variables', 'go' => 'here']);

the template file home.html (/path/to/template/home.html) would look like:

<div>
    Hi, I am unique: <b>{{ uniqid() }}</b>.
    <br/> 
    {{ my_custom_function('Devknown') }}
</div>