Вызов ViewHelper из контроллера

я пытаюсь вызвать функцию ViewHelper из контроллера в Typo3 (чтобы добавить некоторые дополнительные данные заголовка)

База является Яг Галерея.

Я редактировал ItemListController.php и добавил следующее:

$pager = $this->extListContext->getPagerCollection();
$prevLinkUid = $pager->getPreviousPage();
$arg = Tx_YAG_ViewHelpers_Namespace_GPArrayViewHelper::render([page:$prevLinkUid], $pager)
$test = '<link rel="test" href="' . $arg . '">';
$this->response->addAdditionalHeaderData($test);

Функция addAdditionalHeaderData хорошо работает с другими данными (например, $prevLinkUidтак что эта часть функционирует хорошо).

Если я понимаю синтаксис GPArrayViewHelper :: оказывать правильно, мне нужен pageUid в качестве первого аргумента и pagerCollection в качестве второго аргумента (полученный из этого вызова в Ресурсы / Private / Partials / Пейджер / Default.html

 <extlist:link.action controller="{controller}" action="{action}" arguments="{extlist:namespace.GPArray(object:'{pagerCollection}' arguments:'page:{pager.previousPage}')}"><span>&lt;</span>       </extlist:link.action>

)

Однако — если я попробую этот контроллер, моя страница не будет отображаться, поэтому я предполагаю, что что-то не так с вызовом кода / функции php, может быть, даже синтаксис пара ключ-значение / первый аргумент? Извините, я не профессионал в php

Любые идеи, как я могу достичь этого? Я читал, что может быть трудно использовать ViewHelpers из других контроллеров?

0

Решение

Видовые помощники не должны использоваться вне шаблонов Fluid.

Однако может быть более простой способ достичь того, чего вы хотите, например, с HeaderAssets. Таким образом, вы можете легко добавить фрагменты к <head> вашей страницы из действия контроллера или шаблона страницы.

0

Другие решения

Пожалуйста, не делай этого. Что вы можете сделать, это использовать PageRenderer, Например. с помощью

$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
$pageRenderer->addHeaderData($headerData);
0

По вопросам рекламы [email protected]