【问题标题】:Return value of Event::getAttendees() must be an instance of TYPO3\CMS\Extbase\Persistence\ObjectStorage, null returnedEvent::getAttendees() 的返回值必须是 TYPO3\CMS\Extbase\Persistence\ObjectStorage 的实例,返回 null
【发布时间】:2021-11-22 09:15:21
【问题描述】:

我的 Extbase 模型和 ObjectStorage 的使用存在问题。 我在数据库中有一个对象,其中不包含任何与会者。 通过$repository->update($object); 编辑和保存对象时,出现以下错误:

Return value of TheCodingOwl\OwlCal\Domain\Model\Event::getAttendees() must be an instance of TYPO3\CMS\Extbase\Persistence\ObjectStorage, null returned

但是,我在构造函数中初始化了参加者属性。下图显示了 getter 调用中的代码和 xdebug 中断:

attendees 属性是null 是怎么回事,而应该没有任何方法可以将此属性设置为空值?

【问题讨论】:

    标签: typo3 typo3-11.x


    【解决方案1】:

    问题是你的getter返回一个空值而不是一个ObjectStorage,你应该改变方法签名——像这样:

    class Event extend AbstractEntity {
        protected $attendees = null;
    
        public function getAttendees(): ?ObjectStorage
        {
            return $this->attendees;
        }
    }
    

    但我猜这个问题似乎更多地是关于为什么与会者是空的。要回答这个问题,我们需要更多信息:查看 getter、构造函数、类。

    【讨论】:

    • 不,这不是我的问题。这种情况永远不会弹出,因为该属性首先不应为空。构造函数设置了一个默认值,而setter不允许设置null。
    • 正如我告诉你的那样,如果没有看到更多代码,我无法为你提供有关该问题的更多信息。可能只是一个错字。您是否在构造函数中设置了断点并检查 $this->attendees 是否已正确初始化?
    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 2016-07-07
    • 2018-10-18
    • 1970-01-01
    • 2022-12-03
    • 2018-07-24
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多