Необъявленные аргументы, переданные ViewHelper - PullRequest
0 голосов
/ 15 марта 2020

Я обновил веб-сайт с TYPO3 v7 до v9, и теперь я получаю следующую ошибку:

Необъявленные аргументы, передаваемые ViewHelper \ ViewHelpers \ MyViewHelper: значение, список. Допустимые аргументы: [...]

Мой текущий ViewHelper выглядит следующим образом:

<?php

namespace VP\News\ViewHelpers;

/**
* @package TYPO3
* @subpackage Fluid
*/

class InListViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper  {

/**
* @param mixed $value value
* @param mixed $list list
* @return boolean
*/

public function render($value, $list) {
    if (!is_array($list)) {
        $list = str_replace(' ', '', $list);
        $list = explode(',', $list);
    }
    return in_array($value, $list);
}
}

1 Ответ

2 голосов
/ 15 марта 2020

Некоторые вещи изменились между v7 и v9 ViewHelpers в TYPO3 Fluid .

➊ Вы должны выйти из абстрактного класса TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper.
➋ Вы должны зарегистрировать аргументы вы переходите к ViewHelper.
➌ Ваш ViewHelper больше похож на Condition-ViewHelper , чем Abstract-ViewHelper .

Первая точка не требует пояснений , Просто измените имя базового класса (полное имя класса). Для второго пункта вы можете использовать дополнительный метод initializeArguments(). Например:

public function initializeArguments(): void
{
  parent::initializeArguments();
  $this->registerArgument('value', 'type', 'description');
  ...
}

Вы можете найти пример здесь .

Однако ваш ViewHelper, похоже, проверяет условие (" это элемент в list?"," затем ..."," else ..."). Следовательно, может быть лучше реализовать Condition-ViewHelper .

. Этот тип ViewHelper расширяет класс TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper и оценивает условие, используя метод verdict() вместо render(). или renderStatic().

Вы можете найти пример простого Condition-ViewHelper здесь .

...