用新动作扩展扩展

Extending extension with new actions

我正在从 6.2 迁移到 7.6,我正在努力处理一个扩展 (A),它扩展了另一个扩展 (b),它扩展了新闻 (A-->B-->News)。在 6.2 中一切正常,但在 7.6 中却不行。

我正在从 Typoscript 调用我的操作 (lib.news.nextEvent)

lib.news.nextEvent < .related
nextEvent  {
    switchableControllerActions {
          News {
            1 = nextEventList
          }
    }

    settings {
        startingpoint = 123
        limit = 15

    link {
            skipControllerAndAction = 1
        }
    }
}

我有这个错误

Oops, an error occurred! Code: 201812181555070cca4167 - {"exception":"exception 'TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException' with message 'An action \"nextEventListAction\" does not exist in controller \"Roquin\RoqNewsevent\Controller\EventController\"

TypoScript\setup.txt

config.tx_extbase {
    objects {
        Roquin\RoqNewsevent\Controller\EventController {
            className = QcMedia\QmNewsExtended\Controller\NewsExtendedController
        }
    }
}

在我的控制器中我有(不是完整的实际 class)

NewsExtendedController.php

use Roquin\RoqNewsevent\Controller\EventController;

class NewsExtendedController extends EventController

public function nextEventListAction(array $overwriteDemand = NULL)

有人可以给我关于该错误的提示吗? 谢谢

除了扩展控制器 class 并在 Typo3 设置中正确声明扩展控制器 className 之外,别无他法。

如果您的 class 名称 QcMedia\QmNewsExtended\Controller\NewsExtendedController 正确并且扩展 QmNewsExtended 已正确安装,则您的缓存可能存在问题。您是否清除了所有缓存,包括自动加载重建?

根据您使用的 roq_newsevent 版本,命名空间会有所不同:

TYPO3 扩展库 3.1.1:

ROQUIN\RoqNewsevent\Controller

来自 visol/ext-roq_newsevent 3.3.0 的分支:

Roquin\RoqNewsevent\Controller

这应该不是问题,但我不确定 TYPO3 中的实现。

config.tx_extbase {
    objects {
        ROQUIN\RoqNewsevent\Controller\EventController {
            className = QcMedia\QmNewsExtended\Controller\NewsExtendedController
        }
    }
}

您可以尝试在 ext_localconf.php 中使用 XCLASS 而不是 TypoScript config.tx_extbase.XXX

$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['ROQUIN\RoqNewsevent\Controller\EventController'] = [
   'className' => 'QcMedia\QmNewsExtended\Controller\NewsExtendedController'
];