Flash消息TYPO3 6至7更新

问题描述 投票:0回答:1

我在迁移到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 extbase typo3-7.6.x
1个回答
0
投票

(免责声明:TYPO3 v7.6已达到使用寿命,并且不再维护)

为了了解正在发生的事情,让我们看一下源代码(指的是您发布的错误消息,检查AbstractController.php

$this->controllerContext->getFlashMessageQueue()->enqueue($flashMessage);

https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_7-6/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php#L190

$this->controllerContext = $this->buildControllerContext();

https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_7-6/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php#L238

因此,我的假设是(!),您在不调用public function processRequest(...)的情况下在应用程序特定的控制器中重写了parent::processRequest(...),导致未初始化$this->controllerContext的情况。

© www.soinside.com 2019 - 2024. All rights reserved.