Bonjour à tous,

Je me suis mis au framework PHP Slim et j'utilise Twig pour rendre mes vues. Tous fonctionne très bien mais je voudrais rajouter des fonctions à Twig.

J'ai donc créé une class TwigExtension qui extends de \Slim\Views\TwigExtension et j'ai créé la fonction getFunctions. Le problème est que maintenant il ne prend plus en compte les fonctions créés par Slim. Du coup je n'ai plus mon urlFor.

Ma question est donc : Comment faire pour que mes 2 class cohabitent ensemble san problème ?

Voici mon fichier :

<?php

    namespace Core;

    class TwigExtension extends \Slim\Views\TwigExtension {

        public function getFunctions () {
            return array(
                new \Twig_SimpleFunction('asset', array($this, 'asset')),
            );
        }

        public function asset ($ressource) {
            return PUBLIC_URL . $ressource;
        }
    }

Merci d'avance à vous et bon weekend

1 réponse


BaBeuloula
Auteur
Réponse acceptée

Finalement un tour sur la doc de PHP aura été utile. Je pose la solution car cela peut servir à d'autre :

<?php

    namespace Core;

    class TwigExtension extends \Slim\Views\TwigExtension {

        public function getFunctions () {
            // Je récupère le tableau de la class parent
            $functions = parent::getFunctions();

            // Et j'ajoute les nouvelles fonctions
            array_push($functions, new \Twig_SimpleFunction('asset', array($this, 'asset')));

            // Et je retourne le tout
            return $functions;
        }

        public function asset ($ressource) {
            return PUBLIC_URL . $ressource;
        }
    }