1

I'm trying to decode a JSON string in my twig file. Of course I've done some research and I've found this earlier question on StackOverflow: here. They give a method to decode JSON in twig, but I don't really understand the way I should do it.

They say something about creating files etc. but I don't understand where they should be created. So I'm trying to find another way.

I've come up with this page. When we take a look at 'filters', these lines come up:

$filter = new Twig_Filter('rot13', function ($string) {
    return str_rot13($string);
});

So I thought I could use them like this:

$filter = new Twig_Filter('json_decode', function ($string) {
    return json_decode($string);
});

Now, I'd like to know whether this way should work. Also, where I'd have to put these lines of code. And finally, would I have to use the filter like this:

{{ data.params|json_decode }}

When I'm wrong, please give me the points that I mis, or, give me an easy solution that should do the job for me.

Edit I'm using twig in the Silex framework!

Community
  • 1
  • 1

2 Answers2

1
<?php
    $app = new \Silex\Application();
    $app->register(new \Silex\Provider\TwigServiceProvider(), []);  
    $app['twig']->addFilter(new Twig_SimpleFilter('json_decode', function ($string) {
        return json_decode($string);
    }));
DarkBee
  • 16,592
  • 6
  • 46
  • 58
  • The following error comes up: Fatal error: Uncaught Error: Cannot instantiate abstract class Twig_Filter in –  May 02 '17 at 08:36
  • Sry just c/p your code, you need to use a `Twig_SimpleFilter`, updated my code – DarkBee May 02 '17 at 08:40
0

Twig is a pain as almost all info you find is for another Version of it, the people behind Twig are good developers they also significantly make it better than before. But they also break just anything you were used to in the progress.

$twig_env->addFilter(new \Twig\TwigFilter('json_decode','json_decode'));
John
  • 7,507
  • 3
  • 52
  • 52