EXTBASE:属性路径上的属性映射时出现异常

时间:2013-09-06 09:51:34

标签: model typo3 extbase

在AbstractValueObject对象上调用getter时会显示以下错误:

  

属性路径上的属性映射时出现异常   “”:不允许创建对象。为了实现这一点,你   需要设置PropertyMappingConfiguration值   “CONFIGURATION_CREATION_ALLOWED”为TRUE

如何解决这个问题?

2 个答案:

答案 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的数组。

原因可以在这里找到: https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/extbase/Classes/Property/TypeConverter/PersistentObjectConverter.php

标题中的注释说:

  
      
  • 如果输入是字符串,则假定它是UID。然后,该对象从持久性中获取。
  •   
  • ...
  •   
  • 如果输入没有标识属性,但有其他属性,我们创建一个新对象并将其返回。
  •   

根据定义,ValueObject没有标识。因此,添加它而不创建新的唯一方法是将UID作为字符串参数传递给属性映射器。