我通常将用户可选属性映射到相应的类,如此
class Person {
/**
* @ORM\ManyToMany(targetEntity="HobbyClass")
*/
private $hobby
}
class HobbyClass{
private $name; // e.g. "Outdoors"
}
要创建或编辑实体,我只需在表单中使用实体类型表单字段。 然后,当我需要用树枝显示实体视图时,我就这样做:
{% for item in person.hobby %}
<li>{{ item.name }}</li> {# e.g. "Outdoors" #}
{% endfor %}
但这次我正在使用实现ChoiceListInterface的类Selectables
class Entity {
/**
* @var array
*/
private $properties
}
class Selectables implements ChoiceListInterface {
...
}
然后我用选择类型表单字段创建和编辑这个实体 当然,在树枝上,我得到钥匙,而不是之前的财产名称
{% for item in entity.properties %}
<li>{{ item }}</li> {#e.g. "property_key", whereas its name is "Sports"#}
{% endfor %}
问题是数据只是一个只在表单中有意义的键数组。但我需要在实体视图中将其显示为人类可读。
使用ChoiceListInterface的原因是选择列表不会使用CRUD更新,我可以在代码中维护它。使用起来需要的工作量少一点,并且不需要连接和数据库表。
对此最好的解决办法是什么:
由于