Php TYPO3/Extbase:Datamapper不再使用TYPO3 9.5.x
在较早的TYPO3版本(如TYPO3 8.7.x)中,我使用DataMapper将来自querybuilder select结果的结果映射到一个对象数组。这在TYPO3 8.7.x中运行良好,但在TYPO3 9.5.x中,我得到了错误消息“调用null上的成员函数buildDataMap()Php TYPO3/Extbase:Datamapper不再使用TYPO3 9.5.x,php,typo3,extbase,typo3-8.x,typo3-9.x,Php,Typo3,Extbase,Typo3 8.x,Typo3 9.x,在较早的TYPO3版本(如TYPO3 8.7.x)中,我使用DataMapper将来自querybuilder select结果的结果映射到一个对象数组。这在TYPO3 8.7.x中运行良好,但在TYPO3 9.5.x中,我得到了错误消息“调用null上的成员函数buildDataMap() 某些类需要其他对象作为依赖项。如果属性是用@inject注释的,或者如果存在匹配的injectPropertyName方法,则类型3中就是这种情况 在这种情况下,应该使用ObjectManager实例化该类
某些类需要其他对象作为依赖项。如果属性是用
@inject
注释的,或者如果存在匹配的injectPropertyName
方法,则类型3中就是这种情况
在这种情况下,应该使用ObjectManager实例化该类(本例中为DataMapper)
通常是这样的:
$dataMapper = GeneralUtiity::makeInstance(ObjectManager::class)->get(DataMapper::class);
某些类需要其他对象作为依赖项。如果属性是用
@inject
注释的,或者如果存在匹配的injectPropertyName
方法,则类型3中就是这种情况
在这种情况下,应该使用ObjectManager实例化该类(本例中为DataMapper)
通常是这样的:
$dataMapper = GeneralUtiity::makeInstance(ObjectManager::class)->get(DataMapper::class);
由于ObjectManager的
get
方法在TYPO3版本10中被标记为已弃用,因此我使用inject
注释来获取DataMapper实例
/**
* Datamaper
*
* @var DataMapper
* @TYPO3\CMS\Extbase\Annotation\Inject
*/
protected $dataMapper;
由于ObjectManager的
get
方法在TYPO3版本10中被标记为已弃用,因此我使用inject
注释来获取DataMapper实例
/**
* Datamaper
*
* @var DataMapper
* @TYPO3\CMS\Extbase\Annotation\Inject
*/
protected $dataMapper;
我看不到您的类,但是如果您的扩展
YourClass扩展\TYPO3\CMS\Extbase\Persistence\Repository
,那么ObjectManager已经可用,您可以将其与$this->ObjectManager->get(DataMapper::class)
一起使用。是的,我忘记了这一点。如果它位于extbase控制器内部,则相同。我看不到您的类,但如果您的扩展YourClass扩展\TYPO3\CMS\extbase\Persistence\Repository
,则ObjectManager已经可用,您可以将其与$this->ObjectManager->get(DataMapper::class)
一起使用。是的,我忘记了。如果它位于extbase控制器内部,则相同。