Search code examples
phptwigfluidviewhelper

how to create viewhelpers with twig


I am using Twig on a standalone basis without symfony. I made lots of templates that all work just fine. I have been trying to build a viewhelper just like in Fluid. I wanted to create a viewhelper which basically just wraps a text with some html tags or what ever i like, but twig always seems to htmlspecialchars() whatever i am trying to do. What i have tried sofar:

    // ...
    $twig->addFunction(new Twig_SimpleFunction('test2',function($one){
        return '<h1> '.$one.' </h1>';
    }));
    // ...
    $twig->addFunction('displayResponseMessage', new Twig_Function_Function('displayResponseMessage'));
    // ...

I'm clueless. :(


Solution

  • To fix your issue, you should provide the is_safe option:

    $twig->addFunction(new Twig_SimpleFunction('test2',function($one){
        return '<h1> '.$one.' </h1>';
    }), array('is_safe' => array('html'));
    

    Check out the documentation.

    Anyway, I suggest you to look at the import tag, as Twig already handle your requirement.