可以在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 …
json_decode
{% 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 %}