Typo3:如何获取View异常错误

Typo3: How to get the View exception error

我正在为 Typo3 开发自定义扩展。现在,如果用户没有从模板的包含部分包含我的扩展,我会收到错误消息。

我想捕获此错误以显示来自控制器的消息。我该怎么做?

我的控制器动作。

 public function listAction()
 {
    $audits = $this->auditRepository->findAll();
    $this->view->assign('arrDetails', $audits);
 }

这可能是一种解决方案,但不是最干净的。

我们首先需要从位于 sys_template table 的字段 include_static_file 中获取值。所以:

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template')->createQueryBuilder();
$result = $queryBuilder
       ->select('include_static_file')
       ->from('sys_template')
       ->execute()
       ->fetch(0);

我们需要获取字符串并评估您的扩展密钥是否存在。所以:

 $extKey = 'your_extension_key';

 if (strpos($result['include_static_file'], $extKey) !== false) {
    $audits = $this->auditRepository->findAll();
    $this->view->assign('arrDetails', $audits);
 }
 else {
    $this->addFlashMessage(
            'You forgot to add the static template',
            $messageTitle = 'Template is missing',
            $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING,
            $storeInSession = TRUE
        );
 }

你的HTML

<f:if condition="{arrDetails}">
    <f:then>
        do something with your content
    </:then>
    <f:else>
           <f:flashMessages />
    </f:else>
</f:if>

当然,您可以为此编写一个静态函数,或者您可以使用 LocalizationUtility 来获取多种语言的文本。由你决定。

结果:

您确定需要静态模板吗?

我认为从 typoscript 中获取的某些值具有有意义的内容很重要。
无论如何,当您检查它们时,如果一个或多个值是空的,您可以输出一条消息。

如果以任何方式设置所有必要的值,您的插件将在安装中运行。即使不包含您的静态模板。
如果您的静态模板被包含在内,您的插件将失败,但按照打字错误会删除其中的设置。

在您的错误消息中,您可以注意到使用静态模板中的值的可能性。