gpt4 book ai didi

php - 从字符串访问子实体属性 - Twig/Symfony

转载 作者:可可西里 更新时间:2023-10-31 23:31:02 26 4
gpt4 key购买 nike

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

这是工作:

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

我不会将 s 字符串作为参数传递来获得相同的东西:

{% for entity in array %}
{{ attribute(entity, "child.child.prop1") }}
{% endfor %}

但是我得到错误:

Method "child.child.prop1" for object "CustomBundle\Entity\Entity1" does not exist...

有什么办法吗?

最佳答案

你可以写一个custom twig extension具有使用 PropertyAccess component 的函数symfony 检索值。一个示例扩展实现可以是这样的:

<?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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com