如何访问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/