Skip to content

Extending Latte ​

This page covers how to extend the Latte templating engine with custom functionality in your CakePHP application.

Adding Custom Extensions ​

You can add your own Latte extensions to provide custom functions, filters, and tags. For detailed information on creating extensions, see the Latte Extensions documentation.

Registering Extensions in Your View ​

php
<?php
namespace App\View;

use App\View\Extension\MyCustomExtension;
use Latte\Extension;
use LatteView\View\LatteView;

class AppView extends LatteView
{
    public function initialize(): void
    {
        parent::initialize();
        
        // Add your custom extension
        $this->getEngine()->addExtension(new MyCustomExtension());
        
        // Or add multiple extensions
        $this->getEngine()->addExtension(new AnotherExtension());
    }
}

Configuring Sandbox Security ​

When sandbox mode is enabled, you can customize the security policy to control template access:

php
<?php
namespace App\View;

use Latte\Sandbox\SecurityPolicy;
use LatteView\View\LatteView;

class AppView extends LatteView
{
    public function initialize(): void
    {
        parent::initialize();
        
        // Enable sandbox mode
        $this->setConfig('sandbox', true);
        
        // Create and configure security policy
        $policy = new SecurityPolicy();
        $policy->allowFunctions(['date', 'strtoupper']);
        $policy->allowMethods([
            'Cake\ORM\Entity' => ['get', 'has', 'toArray'],
        ]);
        
        $this->setSandboxPolicy($policy);
    }
}

For more information on security policies, see the Latte Sandbox documentation.