如何访问twig中的子实体属性值。例子 :

这真是令人震惊:

{% for entity in array %}
    {{ entity.child.child.prop1 }}
{% endfor %}

我不会将s字符串作为param来获得相同的结果:
{% for entity in array %}
    {{ attribute(entity, "child.child.prop1") }}
{% endfor %}

但是我得到了错误:



有什么办法吗?

最佳答案

您可以使用使用symfony的custom twig extension来检索值的函数编写PropertyAccess component。一个扩展实现示例可以是:

<?php

use Symfony\Component\PropertyAccess\PropertyAccess;

class PropertyAccessorExtension extends \Twig_Extension
{
    /** @var  PropertyAccess */
    protected $accessor;


    public function __construct()
    {
        $this->accessor = PropertyAccess::createPropertyAccessor();
    }

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

    public function getAttribute($entity, $property) {
        return $this->accessor->getValue($entity, $property);
    }

    /**
     * Returns the name of the extension.
     *
     * @return string The extension name
     *
     */
    public function getName()
    {
        return 'property_accessor_extension';
    }
}

registering this extension as service之后,您可以致电
{% for entity in array %}
    {{ getAttribute(entity, "child.child.prop1") }}
{% endfor %}

祝您编码愉快!

关于php - 从字符串访问子实体属性-Twig/Symfony,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23364538/

10-14 15:07