0

在我的扩展中,我使用了 tx_news 扩展的 backendUtility Hook。它在 TYPO3 的早期版本中运行良好。

/**
 * @param array|string $params
 * @param array $reference
 * @return void
 */
public function updateFlexforms(&$params, &$reference) {
    if ($params['selectedView'] === 'News->calendar') {
        $removedFields = $this->removedFieldsInCalendarView;

        $this->deleteFromStructure($dataStructure, $removedFields);
    }
    
}

在 TYPO3 8.3 和 8.4 中,我收到以下警告:

1: PHP 警告: \Foo\BarBackendUtility::updateFlexforms(&$params, &$reference) 的声明应该与 /path 中的 GeorgRinger\News\Hooks\BackendUtility::updateFlexforms(array &$dataStructure, array $row) 兼容/to/BackendUtility.php 第 0 行

因为它是一个钩子,它需要这些参数params和reference,我不能把它改成原始函数的参数。这也会导致一个问题。

我在这里想念什么?

4

3 回答 3

1

同一个线程中的第一个答案和评论(均由 Georg Ringer 撰写)导致了解决方案:

/**
 * @param array $params
 * @param array $reference
 * @return void
 */
public function updateFlexformsDatedNews(&$params, &$reference) {
    if ($params['selectedView'] === 'News->calendar') {
        $removedFields = $this->removedFieldsInCalendarView;
        $this->deleteFromStructure($params['dataStructure'], $removedFields);
    }

}

这适用于 PHP5.6 和 7.0

于 2016-09-10T17:03:54.507 回答
1

只需将您的 updateFlexform 方法重命名为不同的名称。

问题是因为php7

于 2016-09-10T08:15:12.603 回答
0

这是 PHP Warrnig 消息,因为在 TYPO3 8 核心updateFlexforms()函数中传递了两个始终为数组类型的参数。您需要在此函数中传递数组值。

于 2017-06-15T05:45:21.987 回答