【发布时间】:2015-06-15 14:39:16
【问题描述】:
我们正在将 4.5 扩展迁移到 7.2。一种特殊情况很奇怪。尝试获取 findOneByUid 会导致“没有给出类名来检索数据映射”。错误。
通过另一个对象访问并使用 DebuggerUtility 它允许我们导航到失败的对象,我们可以看到,objectType 为 NULL。
任何线索在哪里搜索?所有其他对象都可以通过 findOneByUid 访问。
您将如何着手查找问题?
【问题讨论】:
我们正在将 4.5 扩展迁移到 7.2。一种特殊情况很奇怪。尝试获取 findOneByUid 会导致“没有给出类名来检索数据映射”。错误。
通过另一个对象访问并使用 DebuggerUtility 它允许我们导航到失败的对象,我们可以看到,objectType 为 NULL。
任何线索在哪里搜索?所有其他对象都可以通过 findOneByUid 访问。
您将如何着手查找问题?
【问题讨论】:
添加以下行解决了问题...知道如何避免这种情况吗?
public function __construct() {
$this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$this->objectType = \TYPO3\CMS\Core\Utility\ClassNamingUtility::translateRepositoryNameToModelName($this->getRepositoryClassName());
}
【讨论】:
对象类型只能是null 如果存储库的构造函数已在子类中被覆盖而没有调用父构造函数。 parent::__construct();
您应该使用方法initializeObject,而不是使用构造函数,该方法在构造函数之后被调用并且可以安全地被覆盖。
【讨论】: