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 中获取的某些值具有有意义的内容很重要。
无论如何,当您检查它们时,如果一个或多个值是空的,您可以输出一条消息。
如果以任何方式设置所有必要的值,您的插件将在安装中运行。即使不包含您的静态模板。
如果您的静态模板被包含在内,您的插件将失败,但按照打字错误会删除其中的设置。
在您的错误消息中,您可以注意到使用静态模板中的值的可能性。
我正在为 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 中获取的某些值具有有意义的内容很重要。
无论如何,当您检查它们时,如果一个或多个值是空的,您可以输出一条消息。
如果以任何方式设置所有必要的值,您的插件将在安装中运行。即使不包含您的静态模板。
如果您的静态模板被包含在内,您的插件将失败,但按照打字错误会删除其中的设置。
在您的错误消息中,您可以注意到使用静态模板中的值的可能性。