答案 0 :(得分:8)
开箱即用,还没有。 我们正在讨论一种通用的方法,但是现在您需要为FormEngine创建自己的renderType。 鉴于您拥有的PHP知识量,这很容易中间化。
以下是步骤:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1463078603] = array(
'nodeName' => 'ApparelCalculation',
'priority' => 40,
'class' => \T3G\Apparel\FormEngine\ApparelCalculation::class,
);
数字1463078603应该是唯一的,所以最好使用当前的unix-timestamp。
在YOUR_EXTENSION/Configuration/TCA/Overrides/tt_content.php
中添加TCA覆盖文件(在这种情况下,我们重写tt_content,因此名称。如果要在TYPO3中重新配置另一个表,请根据表名使用文件名。
在此处添加内容:
$GLOBALS['TCA']['tt_content']['columns']['header']['config']['renderType'] = 'ApparelCalculation';
了解renderType
名称与我们在步骤1中注册的名称相同。
我将在此处添加我的特殊案例类的配置,但我将在本文后面介绍重要内容:
从backend/Classes/Form/Element/InputTextElement.php
复制您的案例可能会有所帮助,因为这似乎是您想要提示的元素。
<?php
namespace T3G\Apparel\FormEngine;
use T3G\Apparel\Calculation\Calculation;
use TYPO3\CMS\Backend\Form\Element\AbstractFormElement;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ApparelCalculation extends AbstractFormElement
{
/**
* Renders the Apparel Calculation Table
*
* @return array
*/
public function render()
{
$resultArray = $this->initializeResultArray();
$calculator = GeneralUtility::makeInstance(Calculation::class);
$resultTable = $calculator->calculateOrder($this->data['databaseRow']['uid']);
$resultArray['html'] = $resultTable;
return $resultArray;
}
}
我不会专注于render()
方法之外的事情,因为那只是普通的PHP。
首先调用$this->initializeResultArray();
非常重要,因此TYPO3可以发挥其魔力来收集所有数据。
从这里起,我建议使用xdebug来掌握你在该课程中可用的内容。
信息量非常密集,但您将拥有构建最疯狂的东西所需的一切。
现在您已经知道所有内容如何一起使用,您可以考虑使用普通PHP扩展backend/Classes/Form/Element/InputTextElement.php
,获取父render()
调用的结果,然后只需添加提示即可。
享受:)