小智 8
开箱即用,还没有.我们正在讨论一种通用的方法,但是现在你需要为FormEngine创建自己的renderType.鉴于您拥有的PHP知识量,这很容易中间化.
以下是步骤:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1463078603] = array(
'nodeName' => 'ApparelCalculation',
'priority' => 40,
'class' => \T3G\Apparel\FormEngine\ApparelCalculation::class,
);
Run Code Online (Sandbox Code Playgroud)
数字1463078603应该是唯一的,所以最好使用当前的unix-timestamp.
添加一个TCA覆盖文件YOUR_EXTENSION/Configuration/TCA/Overrides/tt_content.php(在这种情况下,我们将覆盖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;
}
}
Run Code Online (Sandbox Code Playgroud)
我不会专注于方法之外的事情render(),因为那只是普通的PHP.
首先调用是很重要的$this->initializeResultArray();,因此TYPO3可以发挥其魔力来收集所有数据.
从这里开始,我建议使用xdebug来掌握你在该课程中可用的内容.
信息量非常密集,但你将拥有所需的一切,甚至是最疯狂的东西.
现在您已经知道所有内容如何一起使用,您可能会考虑backend/Classes/Form/Element/InputTextElement.php使用普通PHP进行扩展,获取父render()调用的结果并简单地添加您的提示.
请享用 :)