У меня такая же проблема, в последнее время, и нашел решение после нескольких исследовани.
Проблема в том, что вы не можете использовать вложенную жидкость, например <f:if>
, <f:cObject>
или другие в <f:layout>
. В противном случае вы получите фатальную ошибку в файле кэша, заявив call to a member function getViewHelper() on a non-object.
И когда вы посмотрите на файл кеша, вы обнаружите, что это связано с тем, что $self
не определен.
Поэтому мое решение, поиск public function getLayoutName(
в \ TYPO3 \ CMS \ Fluid \ Ядро \ Compiler \ TemplateCompiler и добавление \$self = \$this;
перед тем \$currentVariableContainer = \$renderingContext->getTemplateVariableContainer();
, как generateCodeForSection()
Я просто взял рядный, если условие. Но это не имеет значения, если я беру тег-основанную или встроенную запись. Я думаю, что у меня нет доступа к жидкости, если viewhelper в разделе f: layout. – kimomat
Это не сработает - причина в том, что значение узла 'f: layout' обрабатывается без фактического отображения шаблона. –