我在迁移到7之前在TYPO3 6 exbase扩展中使用了以下语法:
$this->flashMessageContainer->flush();
$this->flashMessageContainer->getAllMessagesAndFlush();
$this->flashMessageContainer->add(Tx_Extbase_Utility_Localization::translate('undefined error', $this->extensionName));
在我的新代码中,我将使用:
$this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('undefined error', $this->extensionName));
但是我总是会收到此错误:
致命错误:调用成员函数getFlashMessageQueue()第190行上的/srv/www/typo3_src-7.6.32/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php中的非对象]
有关此行为的任何想法吗?
感谢和最诚挚的问候,
克里斯
(免责声明:TYPO3 v7.6已达到使用寿命,并且不再维护)
为了了解正在发生的事情,让我们看一下源代码(指的是您发布的错误消息,检查AbstractController.php
)
$this->controllerContext->getFlashMessageQueue()->enqueue($flashMessage);
$this->controllerContext = $this->buildControllerContext();
因此,我的假设是(!),您在不调用public function processRequest(...)
的情况下在应用程序特定的控制器中重写了parent::processRequest(...)
,导致未初始化$this->controllerContext
的情况。