Typo3 调用未定义的方法getPosition()-为什么和修复
我做了一个extbase扩展,有一个类Typo3 调用未定义的方法getPosition()-为什么和修复,typo3,extbase,typo3-6.2.x,Typo3,Extbase,Typo3 6.2.x,我做了一个extbase扩展,有一个类约会,有一个属性专家和另一个相同类型的子专家。 这是他们在约会类中的样子(子专业相同): 这就是错误: 致命错误:在第453行的/var/www/typo3\u src/typo3\u src-6.2.25/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php中调用未定义的方法\Domain\Model\experties::getPosition() 现在,Type3似乎认为Experti
约会
,有一个属性专家
和另一个相同类型的子专家
。这是他们在
约会
类中的样子(子专业
相同):
这就是错误:
致命错误:在第453行的/var/www/typo3\u src/typo3\u src-6.2.25/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php中调用未定义的方法\Domain\Model\experties::getPosition()
现在,Type3似乎认为Experties
属于ObjectStorage
类型,因为它试图调用getPosition()
,但我不知道它为什么这样做,以及为了成功地用新的Experties保存我的约会
对象,我应该更改什么
我试着调试约会对象,但没有发现问题-对我来说似乎没问题,它只是表明专家
和子专家
已经被修改。Extbase中的Getter方法不是魔法,你必须显式定义它们
如果处理的是n:n关系,还需要在模型中将属性初始化为ObjectStorage,并在TCA中对其进行配置
/**
* Initialize all ObjectStorage properties.
*
* @return void
*/
protected function initStorageObjects() {
$this->yourProperty = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
Extbase中的Getter方法并不神奇,您必须显式定义它们
如果处理的是n:n关系,还需要在模型中将属性初始化为ObjectStorage,并在TCA中对其进行配置
/**
* Initialize all ObjectStorage properties.
*
* @return void
*/
protected function initStorageObjects() {
$this->yourProperty = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
... 你有不同的专业技能拼写,属性为singluar,方法为复数。我再次检查了我的文本,但它很好-道具是objectStorage,所以复数Experties
和SubExperties
类名是Experties
和addExpertise
只添加了一个,所以它应该是单数。。。你有不同的专业技能拼写,属性为singluar,方法为复数。我再次检查了我的文本,但它很好-道具是objectStorage,所以复数Experties
和SubExperties
类名是Experties
和addExpertise
只添加了一个,所以应该是单数,在注意到subexperties
没有初始化为对象存储之后,我找到了原因:这是因为我在扩展生成器中将关系设置为1:n
而不是m:n
谢谢,在注意到subexperties
没有初始化为对象存储之后,我找到了正确的方法:这是因为我在扩展生成器中将关系设置为1:n
,而不是m:n
/**
* Initialize all ObjectStorage properties.
*
* @return void
*/
protected function initStorageObjects() {
$this->yourProperty = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}