Проблема после обновления с 7.6.32 до 8.7.29 - PullRequest
0 голосов
/ 05 ноября 2019

Я только что выполнил обновление typo3 с 7.6.32 до 8.7.29, следуя официальной документации. На самом деле обновление прошло очень хорошо, и я смог выполнить все необходимые шаги с помощью инструмента установки (в частности, Мастер обновления и Важные действия). Похоже, что после обновления FE все работает нормально, в BE возникают некоторые проблемы.

Каждый раз, когда я пытался войти в BE, я получал следующее исключение typo3:

Uncaught TYPO3 Exception
Class 'TYPO3\CMS\Fluid\Core\ViewHelper\Exception\InvalidVariableException' not found

Error thrown in file
/var/www/mysite/typo3_src-8.7.29/typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php in line 133.

Строка 133 этого файла является частью функции "renderStatic", и вот код:

110.    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
111.    {
112.        $key = $arguments['key'];
113.        $id = $arguments['id'];
114.        $default = $arguments['default'];
115.        $htmlEscape = $arguments['htmlEscape'];
116.        $extensionName = $arguments['extensionName'];
117.        $arguments = $arguments['arguments'];
118.
119.        if ($htmlEscape !== null) {
120.            GeneralUtility::logDeprecatedViewHelperAttribute(
121.                'htmlEscape',
122.                $renderingContext,
123.                'Please wrap the view helper in <f:format.raw> if you want to disable HTML escaping, which is enabled by default now.'
124.            );
125.        }
126.
127.        // Wrapper including a compatibility layer for TYPO3 Flow Translation
128.        if ($id === null) {
129.            $id = $key;
130.        }
131.
132.   if ((string)$id === '') {
133.            throw new InvalidVariableException('An argument "key" or "id" has to be provided', 1351584844);
134.        }

Несмотря на эту ошибку, кажется, что главное меню слева от BE работает нормально, за исключением того факта, чтоесли я иду "Проверка БД" -> "Отношения", я получаю другое исключение:

#1476107295: PHP Warning: Invalid argument supplied for foreach() in /var/www/mysite/typo3_src-8.7.29/typo3/sysext/core/Classes/Integrity/DatabaseIntegrityCheck.php line 352 (More information)

А вот соответствующая часть кода для этого файла.

347   public function getGroupFields($mode)
348    {
349        $result = [];
350        foreach ($GLOBALS['TCA'] as $table => $tableConf) {
351            $cols = $GLOBALS['TCA'][$table]['columns'];
352            foreach ($cols as $field => $config) {
353                if ($config['config']['type'] === 'group') {
354                    if ((!$mode || $mode === 'file') && $config['config']['internal_type'] === 'file' || (!$mode || $mode ==='db') && $config['config']['internal_type'] === 'db') {
355                        $result[$table][] = $field;
356                    }
357                }
358                if ((!$mode || $mode === 'db') && $config['config']['type'] === 'select' && $config['config']['foreign_table']) {
359                    $result[$table][] = $field;
360                }
361            }
362            if ($result[$table]) {
363                $result[$table] = implode(',', $result[$table]);
364            }
365        }
366        return $result;
367    }



As far as I can see all the rest works fine. 


My system details:

- Linux (kernel 4.4.190)
- Apache 2.4.39
- PHP 7.2.24
- Typo3 8.7.29

Thanks in advance for your help!


1 Ответ

0 голосов
/ 05 ноября 2019

У вас есть две отдельные проблемы:

Первый - что-то использует

Второй - ваш TCA явно поврежден. Существует таблица, в которой нет определений столбцов.

Обе вещи могут быть вызваны каким-либо расширением, поэтому попробуйте отключить все расширения, насколько это возможно, и повторно включить их по одному.

...