Typo3: Как получить ошибку просмотра исключений - PullRequest
2 голосов
/ 27 сентября 2019

Я занимаюсь разработкой собственного расширения для Typo3.Теперь я получаю сообщение об ошибке, если пользователь не включил мое расширение в раздел include шаблона.

Я хочу поймать эту ошибку, чтобы показать сообщение от контроллера.Как я могу это сделать?

действие моего контроллера.

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

1 Ответ

1 голос
/ 27 сентября 2019

Это может быть одно решение, но не самое чистое.

Сначала нам нужно получить значения из поля include_static_file, которое находится в таблице sys_template.Итак:

$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, чтобы получитьтекст на нескольких языках.Вам решать.

Результат:

enter image description here

...