2017-10-13 221 views
0

我真的試圖調用從一個Typo3的控制器內的視圖助手功能(添加一些附加的報頭數據)呼叫視圖助手從控制器

基地是Yag Gallery

我編輯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::render語法,我需要一個pageUid作爲第一個參數,(內Resources/Private/Partials/Pager/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> 

這個調用得到)的pagerCollection作爲第二個參數

但是 - 如果我嘗試這個控制器我的頁面不會渲染,所以我假設有一些錯誤的PHP代碼/函數調用,甚至可能是關鍵值對/第一個參數的語法?對不起,我不是一個專業的PHP

任何想法我怎麼能做到這一點?我讀過從其他控制器中使用ViewHelper可能很困難?

回答

0

Viewhelpers不應該在Fluid模板之外使用。

但是,可能有更簡單的方法來實現你想要的,例如,與HeaderAssets。通過這種方式,您可以在控制器操作或頁面模板中輕鬆地將摘要添加到頁面的<head>

+0

如果我打開這個權限,這是爲typo3 8.x.x.,正確嗎? 沒有提到,我使用typo3 7.6.x –

+0

正確,這是爲TYPO3 v8和更新版本。 –

0

請真的不要那樣。你可以做的是使用PageRenderer。例如。使用

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

好的,很好的提示,但實際上這並不能幫助我解決我的問題,因爲我無法獲得正確的'$ headerData',而不是將它們添加到我的''部分 –