я пытаюсь вызвать функцию 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><</span> </extlist:link.action>
)
Однако — если я попробую этот контроллер, моя страница не будет отображаться, поэтому я предполагаю, что что-то не так с вызовом кода / функции php, может быть, даже синтаксис пара ключ-значение / первый аргумент? Извините, я не профессионал в php
Любые идеи, как я могу достичь этого? Я читал, что может быть трудно использовать ViewHelpers из других контроллеров?
Видовые помощники не должны использоваться вне шаблонов Fluid.
Однако может быть более простой способ достичь того, чего вы хотите, например, с HeaderAssets
. Таким образом, вы можете легко добавить фрагменты к <head>
вашей страницы из действия контроллера или шаблона страницы.
Пожалуйста, не делай этого. Что вы можете сделать, это использовать PageRenderer
, Например. с помощью
$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
$pageRenderer->addHeaderData($headerData);