为了账号安全,请及时绑定邮箱和手机立即绑定

“阶级不存在。反思失败。” 延迟加载和对象存储

“阶级不存在。反思失败。” 延迟加载和对象存储

PHP
慕娘9325324 2021-06-17 15:41:36
我正在将网站从 TYPO3 8 升级到 TYPO3 9所有代码在 TYPO3 8 上运行良好。现在我必须适应很多,因为它来自更早的 TYPO3(TCA,学说,...)并抛出一些错误。目前我有一些页面的问题,我只收到这个错误(稍作修改):(1/2) #1278450972 TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException类 VendorName\VendorExtensionName\Domain\Model\TYPO3\CMS\Extbase\Persistence\ObjectStorage 不存在。反思失败。我假设它是由以下代码触发的:<?phpnamespace VendorName\VendorExtensionName\Controller;use TYPO3\CMS\Extbase\Annotation\Inject;class AnsprechpartnerController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {    /**     * ansprechpartnerRepository     *     * @Inject     * @var \VendorName\VendorExtensionName\Domain\Repository\AnsprechpartnerRepository     */    protected $ansprechpartnerRepository;    [...]    /**     * action showDetail     *     * @return void     */    public function showDetailAction() {        $pids = $this->settings['pids'];        $this->settings['ansprechpartner'] = explode(',', $this->settings['ansprechpartner']);        foreach ($this->settings['ansprechpartner'] as $uid) {            $person = $this->ansprechpartnerRepository->findByUid($uid);      [...]因为最后一行在调试堆栈中。扩展有8种相互关联的记录。我假设因此定义了关系lazy并使用了对象存储。<?phpnamespace VendorName\VendorExtensionName\Domain\Model;use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;/** * * @package vendor_extension_name * */class Ansprechpartner extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {[...]/** * Organisationseinheit * * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VendorName\VendorExtensionName\Domain\Model\Organisation> * @Lazy */protected $organisationseinheit;/** * Dienstleistungen * * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VendorName\VendorExtensionName\Domain\Model\AnsprechpartnerDienstleistung> * @Lazy */protected $dienstleistungen = NULL;[...]
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

我们发现,这是由于 9.x 中的更改,现在 Annotations 和 TypeHints 中支持相对命名空间。

在 9.x 之前,Extbase 反射总是假设绝对命名空间。

如果有一个带有这个签名的方法,它在 9.x 之前工作(这是一个错误)并且从 9.x 开始不再工作:

public function setSomeStorage(TYPO3\CMS\Extbase\Persistence\ObjectStorage $storage) {

这必须是:

public function setSomeStorage(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $storage) {


查看完整回答
反对 回复 2021-06-19
?
冉冉说

TA贡献1877条经验 获得超1个赞

如果您收到一条错误消息,并带有这样的前导括号:(1/3)那么在这种情况下搜索页面上的所有三个错误是值得的。
在我的情况下,最后一条消息错误消息提到了语法错误,然后该类自然不会加载 - 但我可以纠正语法错误,然后一切正常。

查看完整回答
反对 回复 2021-06-19
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号