Расширение расширения с помощью новых действий

Я перехожу с 6.2 на 7.6 и борюсь с расширением (A), которое расширяет другое расширение (b), которое расширяет Новости (A ->B-> Новости). Все хорошо в 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
        }
    }
}

В моем контроллере у меня есть (не полный фактический класс)

NewsExtendedController.php

use Roquin\RoqNewsevent\Controller\EventController;

class NewsExtendedController extends EventController

public function nextEventListAction(array $overwriteDemand = NULL)

Может кто-нибудь дать мне подсказку об этой ошибке? Спасибо

2 ответа

Решение

В зависимости от того, какая версия roq_newsevent вы используете, пространство имен отличается в случае:

Репозиторий расширений TYPO3 3.1.1:

ROQUIN\RoqNewsevent\Controller

Вилка из https://github.com/visol/ext-roq_newsevent 3.3.0:

Roquin\RoqNewsevent\Controller

Это не должно быть проблемой, но я не уверен насчет реализации в TYPO3.

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

Вы можете попробовать использовать XCLASS в ext_localconf.php вместо TypoScript config.tx_extbase.XXX

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

Больше ничего не нужно делать, кроме расширения класса контроллера и объявления расширенного класса контроллера NameName в настройке Typo3, что вы сделали правильно.

Если имя вашего класса QcMedia\QmNewsExtended\Controller\NewsExtendedController указано правильно и расширение QmNewsExtended установлено правильно, возможно, проблема связана с вашими кэшами. Очистили ли вы все кеши, в том числе автозагрузку?

Другие вопросы по тегам