tx_新闻的Flexform挂钩在TYPO3 8.x中不起作用

tx_新闻的Flexform挂钩在TYPO3 8.x中不起作用,typo3,hook,tx-news,Typo3,Hook,Tx News,在我的扩展中,我正在使用tx_新闻扩展的后端实用程序挂钩。它在TYPO3的previos版本中运行良好 /** * @param array|string $params * @param array $reference * @return void */ public function updateFlexforms(&$params, &$reference) { if ($params['selectedView'] === 'News->calen

在我的扩展中,我正在使用tx_新闻扩展的后端实用程序挂钩。它在TYPO3的previos版本中运行良好

/**
 * @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警告:updateFlexforms(&$params,&$reference)的声明应与/path/to/BackendUtility.PHP行0中的GeorgRinger\News\Hooks\BackendUtility::updateFlexforms(array&$dataStructure,array$row)兼容 由于它是一个钩子,需要这些参数params和reference,所以我无法将其更改为原始函数的参数。这也会导致一个问题


我在这里遗漏了什么?

只需将updateFlexform方法重命名为其他名称即可


问题是由于php7的原因,只需将updateFlexform方法重命名为其他名称即可


问题是因为php7,第一个答案和同一个线程中的注释(均由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。第一个答案和同一条线索中的注释(均由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,这是PHP Warrnig消息,因为在TYPO3 8 core
updateFlexforms()函数中,总是使用类型数组传递两个参数。您需要在此函数中传递数组值

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

我以前也这么认为,但得到了这个错误:传递给GeorgRinger\News\Hooks\BackendUtility::deleteFromStructure()的参数1必须是数组类型,null给定,在第33行的/BackendUtility.php中调用,我以前也这么认为,但得到了这个错误:传递给GeorgRinger\News\Hooks\BackendUtility::deleteFromStructure()的参数1必须是第33行的/BackendUtility.php中调用的数组类型(给定null)