TYPO3 Gridelements。从 child 渲染资产
TYPO3 Gridelements. Render assets from child
我正在创建一个带有网格元素的内容元素,我需要在其中直接呈现来自子元素的一些数据。 "bodytext" 或 "header" 这样的字段没有问题。但是资产只给我一个计数器,而不是参考或路径。
所以最大的问题是:我如何渲染孩子的资产图像?
我可以分享我刚做的VH
<?php
namespace GeorgRinger\Theme\ViewHelpers;
use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3\CMS\Frontend\Resource\FileCollector;
class FalViewHelper extends AbstractViewHelper
{
/**
* @var boolean
*/
protected $escapeOutput = FALSE;
/**
* @param string $table
* @param string $field
* @param string $id
* @param string $as
* @return string
*/
public function render($table, $field, $id, $as = 'references')
{
$row = $this->getDatabaseConnection()->exec_SELECTgetSingleRow('*', $table, 'uid=' . (int)$id);
if (!$row) {
return '';
}
$fileCollector = GeneralUtility::makeInstance(FileCollector::class);
$fileCollector->addFilesFromRelation($table, $field, $row);
$this->templateVariableContainer->add($as, $fileCollector->getFiles());
$output = $this->renderChildren();
$this->templateVariableContainer->remove($as);
return $output;
}
/**
* @return DatabaseConnection
*/
protected function getDatabaseConnection()
{
return $GLOBALS['TYPO3_DB'];
}
}
当然要采用namspace
用法是
<theme:fal table="tt_content" field="assets" id=" => the id <= ">
<f:debug>{references}</f:debug>
</theme:fal>
我正在创建一个带有网格元素的内容元素,我需要在其中直接呈现来自子元素的一些数据。 "bodytext" 或 "header" 这样的字段没有问题。但是资产只给我一个计数器,而不是参考或路径。
所以最大的问题是:我如何渲染孩子的资产图像?
我可以分享我刚做的VH
<?php
namespace GeorgRinger\Theme\ViewHelpers;
use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3\CMS\Frontend\Resource\FileCollector;
class FalViewHelper extends AbstractViewHelper
{
/**
* @var boolean
*/
protected $escapeOutput = FALSE;
/**
* @param string $table
* @param string $field
* @param string $id
* @param string $as
* @return string
*/
public function render($table, $field, $id, $as = 'references')
{
$row = $this->getDatabaseConnection()->exec_SELECTgetSingleRow('*', $table, 'uid=' . (int)$id);
if (!$row) {
return '';
}
$fileCollector = GeneralUtility::makeInstance(FileCollector::class);
$fileCollector->addFilesFromRelation($table, $field, $row);
$this->templateVariableContainer->add($as, $fileCollector->getFiles());
$output = $this->renderChildren();
$this->templateVariableContainer->remove($as);
return $output;
}
/**
* @return DatabaseConnection
*/
protected function getDatabaseConnection()
{
return $GLOBALS['TYPO3_DB'];
}
}
当然要采用namspace
用法是
<theme:fal table="tt_content" field="assets" id=" => the id <= ">
<f:debug>{references}</f:debug>
</theme:fal>