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
Php TYPO3/Extbase:Datamapper不再使用TYPO3 9.5.x_Php_Typo3_Extbase_Typo3 8.x_Typo3 9.x - Fatal编程技术网

Php TYPO3/Extbase:Datamapper不再使用TYPO3 9.5.x

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实例化该类

在较早的TYPO3版本(如TYPO3 8.7.x)中,我使用DataMapper将来自querybuilder select结果的结果映射到一个对象数组。这在TYPO3 8.7.x中运行良好,但在TYPO3 9.5.x中,我得到了错误消息“调用null上的成员函数buildDataMap()


某些类需要其他对象作为依赖项。如果属性是用
@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控制器内部,则相同。