ZF2: Custom ZfcTwig Extension unter Zend 2

Notizen zu einer exemplarischen Twig Extension unter ZF2 &ZfcTwig:

Klasse anlegen z.B. unter Application/src/Application/View/CustomTwigExtension.php

<?php

// http://stackoverflow.com/questions/28254666/twig-add-filter

namespace Application\View;

use Twig_Extension;
use Twig_SimpleFilter;
use Twig_SimpleFunction;

class CustomTwigExtension extends Twig_Extension
{
    public function getFilters() {
        return [new Twig_SimpleFilter('ucfirst', 'ucfirst') ];
    }
    public function getName() {
        return "CustomTwigExtension";
    }
    public function getFunctions() {
        return [new Twig_SimpleFunction('renderimg', function ($picture, $width = 100, $height = 100) {
            $filename = basename($picture);
            
            return '<img src="' . $filename . '" width="' . $width . '" height="' . $height . '" />';
        }
        , array(
            'is_safe' => array(
                'html'
            )
        )) ];
    }
}

Custom Extension in config/autoload/global.php registieren:

<?php
/**
 * Global Configuration Override
 *
 * You can use this file for overriding configuration values from modules, etc.
 * You would place values in here that are agnostic to the environment and not
 * sensitive to security.
 *
 * @NOTE: In practice, this file will typically be INCLUDED in your source
 * control, so do not include passwords or other sensitive information in this
 * file.
 */

return array(
	'zfctwig' => [
	      'extensions' => [
	            'Twig_Extension_Debug',

	            // Custom Twig Extension registrieren
	            \Application\View\CustomTwigExtension::class,
	      ],
	      'environment_options' => array(
	            'debug'         => false
	      )
	],
);

Verwendung im Twig Template

{{ renderimg('test.jpg', 100, 100) }}