【问题标题】:Flexform Hook of tx_news not working in TYPO3 8.xtx_news 的 Flexform Hook 在 TYPO3 8.x 中不起作用
【发布时间】:2016-09-10 07:52:37
【问题描述】:

在我的扩展中,我使用了 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) 应该与 GeorgRinger\News\Hooks\BackendUtility::updateFlexforms(array &$dataStructure, array $row) 兼容在 /path/to/BackendUtility.php 第 0 行

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

我在这里错过了什么?

【问题讨论】:

    标签: typo3 hook tx-news


    【解决方案1】:

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

    问题是因为php7

    【讨论】:

    • 我之前也是这么想的,但是得到了这个错误:传递给 GeorgRinger\News\Hooks\BackendUtility::deleteFromStructure() 的参数 1 必须是数组类型,给定 null,在 /BackendUtility 中调用。 php 在第 33 行
    【解决方案2】:

    第一个答案和同一线程中的评论(均由 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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        • 2016-12-16
        • 2020-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多