2016-09-10 3 views
0

В моем расширении я использую backendUtility Hook расширения tx_news. Он хорошо работает в предыдущих версиях TYPO3.Flexform Крючок tx_news не работает в TYPO3 8.x

/** 
* @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 Warning: Declaration of \Foo\BarBackendUtility::updateFlexforms(&$params, &$reference) should be compatible with GeorgRinger\News\Hooks\BackendUtility::updateFlexforms(array &$dataStructure, array $row) in /path/to/BackendUtility.php line 0

Как это крючок и нуждается в этих параметров Params и ссылки, я не могу изменить его параметры оригинала функция. Это также приведет к проблеме.

Что мне здесь не хватает?

ответ

1

Просто переименуйте метод updateFlexform на другое имя.

Проблема из-за php7

+0

Я так и думал об этом, но получил эту ошибку: Аргумент 1 передан GeorgRinger \ News \ Hooks \ BackendUtility :: deleteFromStructure() должен быть из массива типов, null задан, вызывается в /BackendUtility.php в строке 33 – Falk

+0

$ dataStructure не определен в вашем методе ... –

1

Первый ответ и комментарий в том же потоке (как Георг 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

0

Это сообщение PHP Warrnig, Becaue в TYPO3 8 core updateFlexforms() Функция передает два параметра с всегда массивом типа. Вам нужно передать значение массива в этой функции.

Смежные вопросы