在AbstractValueObject对象上调用getter时会显示以下错误:
属性路径上的属性映射时出现异常 “”:不允许创建对象。为了实现这一点,你 需要设置PropertyMappingConfiguration值 “CONFIGURATION_CREATION_ALLOWED”为TRUE
如何解决这个问题?
答案 0 :(得分:1)
在您的扩展构建器中,模型应选择为实体而不是值对象。 或者在模型类中更改类定义以扩展AbstractEntity而不是AbstractValueObject
# change this line:
class MyClass extends \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject
# into this line:
class MyClass extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
答案 1 :(得分:0)
我刚刚找到了解决这个问题的方法而没有丢弃ValueObject类型:在表单viewhelper中,必须显式切换AbstractValueObject的UID:
即
<f:for each="{colors}" as="color">
<f:form.radio property="color" value="{color.uid}" />
</f:for>
代替<f:form.radio property="color" value="{color}" />
,其中{colors}是AbstractValueObject的数组。
标题中的注释说:
- 如果输入是字符串,则假定它是UID。然后,该对象从持久性中获取。
- ...
- 如果输入没有标识属性,但有其他属性,我们创建一个新对象并将其返回。
根据定义,ValueObject没有标识。因此,添加它而不创建新的唯一方法是将UID作为字符串参数传递给属性映射器。