【问题标题】:Typo3: How to get the View exception errorTypo3:如何获取查看异常错误
【发布时间】:2019-09-27 10:25:30
【问题描述】:

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

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

我的控制器操作。

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

【问题讨论】:

  • 您的意思是如果有人忘记添加 STATIC 模板,您想显示一条消息告诉用户他忘记添加了吗?
  • 完全正确!。一些用户没有意识到这一点。所以用户认为这是我的扩展程序的错误。所以如果我能解决的话。

标签: typo3 typo3-extensions


【解决方案1】:

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

我们首先需要从位于 sys_template 表中的字段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 来获取多种语言的文本。这取决于你。

结果:

【讨论】:

    【解决方案2】:

    您确定需要静态模板吗?

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

    如果以任何方式设置了所有必要的值,您的插件将在安装中工作。即使您的静态模板不包括在内。
    如果你的静态模板被包含,你的插件会失败,但是下面的打字稿会删除它的设置。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 2014-10-22
      • 2020-04-05
      • 2019-09-08
      相关资源
      最近更新 更多