Прежде всего: если вы хотите, чтобы ваш ViewHelper был условием ViewHelper, вы должны создавать подклассы TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper
, а не TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper
. Первый содержит набор вспомогательных методов, например renderThenChild
(который отображает либо узел f:then
, либо возвращает аргумент then
, в зависимости от того, что присутствует).
Второй: доступ к тегам (в отличие от закрытия, которое отображает либо тег, либо скомпилированное выполнение) может произойти только тогда, когда шаблон еще не скомпилирован, и может быть достигнуто путем переопределения public static function postParseEvent
, который получает ViewHelperNode
, который позволяет вам читать дочерние узлы с getChildNodes
и / или добавить дополнительные дочерние узлы через addChildNode
.
Реализации на основе TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper
и с использованием вручную зарегистрированных аргументов then
и else
также могут работать, но не будут поддерживать дочерние узлы, такие как f:then
, без дублирования почти всех методов помощи из TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper
.
Итак, ответ: да, вы можете сделать это без AbstractConditionViewHelper
, но не должны.