TYPO3 现场助手/提示/技巧
TYPO3 field helpers / hints / tips
因为我是 TYPO3 的新手,所以我想知道是否可以在任何类型的字段下方添加简单的文本提示/技巧,例如昵称输入字段:
提前致谢!
开箱即用,还没有。
我们正在讨论一种通用的方法来这样做,但现在您需要为 FormEngine 创建您自己的 renderType。
考虑到您拥有的 PHP 知识量,这很容易中级。
步骤如下:
第 1 步:在 ext_localconf.php
中添加您自己的 formEngine 类型 class
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1463078603] = array(
'nodeName' => 'ApparelCalculation',
'priority' => 40,
'class' => \T3G\Apparel\FormEngine\ApparelCalculation::class,
);
数字 1463078603 应该是唯一的,因此最好使用当前的 unix 时间戳。
第 2 步:指示您的字段使用该 renderType
在 YOUR_EXTENSION/Configuration/TCA/Overrides/tt_content.php
中添加一个 TCA 覆盖文件(在本例中我们覆盖 tt_content,因此得名。如果你想在 TYPO3 中重新配置另一个 table,请使用文件名根据 tablename.
在此添加一些内容:
$GLOBALS['TCA']['tt_content']['columns']['header']['config']['renderType'] = 'ApparelCalculation';
查看 renderType
名称与我们在步骤 1 中注册的名称如何相同。
第 3 步:渲染您喜欢渲染的内容
我将在此处添加我的特殊情况 class 的配置,但我将在后面介绍重要的内容 post:
从 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 来掌握您在 class 中可用的内容。
信息量非常密集,但您将拥有构建最疯狂的东西所需的一切。
既然您知道所有内容是如何协同工作的,您可能会考虑使用普通 PHP 扩展 backend/Classes/Form/Element/InputTextElement.php
,获取父 render()
调用的结果并简单地将您的提示添加到其中.
尽情享受吧:)
因为我是 TYPO3 的新手,所以我想知道是否可以在任何类型的字段下方添加简单的文本提示/技巧,例如昵称输入字段:
提前致谢!
开箱即用,还没有。 我们正在讨论一种通用的方法来这样做,但现在您需要为 FormEngine 创建您自己的 renderType。 考虑到您拥有的 PHP 知识量,这很容易中级。
步骤如下:
第 1 步:在 ext_localconf.php
中添加您自己的 formEngine 类型 class$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1463078603] = array(
'nodeName' => 'ApparelCalculation',
'priority' => 40,
'class' => \T3G\Apparel\FormEngine\ApparelCalculation::class,
);
数字 1463078603 应该是唯一的,因此最好使用当前的 unix 时间戳。
第 2 步:指示您的字段使用该 renderType
在 YOUR_EXTENSION/Configuration/TCA/Overrides/tt_content.php
中添加一个 TCA 覆盖文件(在本例中我们覆盖 tt_content,因此得名。如果你想在 TYPO3 中重新配置另一个 table,请使用文件名根据 tablename.
在此添加一些内容:
$GLOBALS['TCA']['tt_content']['columns']['header']['config']['renderType'] = 'ApparelCalculation';
查看 renderType
名称与我们在步骤 1 中注册的名称如何相同。
第 3 步:渲染您喜欢渲染的内容
我将在此处添加我的特殊情况 class 的配置,但我将在后面介绍重要的内容 post:
从 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 来掌握您在 class 中可用的内容。
信息量非常密集,但您将拥有构建最疯狂的东西所需的一切。
既然您知道所有内容是如何协同工作的,您可能会考虑使用普通 PHP 扩展 backend/Classes/Form/Element/InputTextElement.php
,获取父 render()
调用的结果并简单地将您的提示添加到其中.
尽情享受吧:)