在Twig中解码JSON

可以在Twig解码JSON吗?谷歌搜索似乎对此没有任何帮助。在Twig中解码JSON没有意义吗?


我正在尝试访问Symfony2的实体字段类型(Entity FieldType)上的2个实体属性。

实体类中的某处:

/**

* Return a JSON string representing this class.

*/

public function getJson()

{

return json_encode(get_object_vars($this));

}

并采用以下形式:

$builder->add('categories', 'entity', array (

...

'property' => 'json',

...

));

之后,我希望json_decode在Twig …

{% for category in form.categories %}

{# json_decode() part is imaginary #}

{% set obj = category.vars.label|json_decode() %}

{% endfor %}

回答:

如果您伸出Twig,那很容易。

首先,创建一个包含扩展名的类:

<?php

namespace Acme\DemoBundle\Twig\Extension;

use Symfony\Component\DependencyInjection\ContainerInterface;

use \Twig_Extension;

class VarsExtension extends Twig_Extension

{

protected $container;

public function __construct(ContainerInterface $container)

{

$this->container = $container;

}

public function getName()

{

return 'some.extension';

}

public function getFilters() {

return array(

'json_decode' => new \Twig_Filter_Method($this, 'jsonDecode'),

);

}

public function jsonDecode($str) {

return json_decode($str);

}

}

然后,在您的Services.xml文件中注册该类:

<service id="some_id" class="Acme\DemoBundle\Twig\Extension\VarsExtension">

<tag name="twig.extension" />

<argument type="service" id="service_container" />

</service>

然后,在您的Twig模板上使用它:

{% set obj = form_label(category) | json_decode %}

以上是 在Twig中解码JSON 的全部内容, 来源链接: utcz.com/qa/405413.html

回到顶部