Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 调用未定义的方法getPosition()-为什么和修复_Typo3_Extbase_Typo3 6.2.x - Fatal编程技术网

Typo3 调用未定义的方法getPosition()-为什么和修复

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

我做了一个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似乎认为
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();
}