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

我正在将网站从 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 不存在。反思失败。


我假设它是由以下代码触发的:


<?php

namespace 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并使用了对象存储。


<?php

namespace 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;


[...]


慕娘9325324
浏览 129回答 3
3回答

炎炎设计

我们发现,这是由于 9.x 中的更改,现在 Annotations 和 TypeHints 中支持相对命名空间。在 9.x 之前,Extbase 反射总是假设绝对命名空间。如果有一个带有这个签名的方法,它在 9.x 之前工作(这是一个错误)并且从 9.x 开始不再工作:public&nbsp;function&nbsp;setSomeStorage(TYPO3\CMS\Extbase\Persistence\ObjectStorage&nbsp;$storage)&nbsp;{这必须是:public&nbsp;function&nbsp;setSomeStorage(\TYPO3\CMS\Extbase\Persistence\ObjectStorage&nbsp;$storage)&nbsp;{

冉冉说

如果您收到一条错误消息,并带有这样的前导括号:(1/3)那么在这种情况下搜索页面上的所有三个错误是值得的。在我的情况下,最后一条消息错误消息提到了语法错误,然后该类自然不会加载 - 但我可以纠正语法错误,然后一切正常。
打开App,查看更多内容
随时随地看视频慕课网APP