gpt4 book ai didi

TYPO3 TCA 使 'default' 值动态化

转载 作者:行者123 更新时间:2023-12-05 07:22:04 25 4
gpt4 key购买 nike

标题不言自明,但我想要的是动态默认值。

其背后的想法是从数据库中的列中获取最大的数字,然后将结果加一。此结果应保存为默认值。

让我们以这段代码为例:

$GLOBALS['TCA'][$modelName]['columns']['autojobnumber'] = array(
'exclude' => true,
'label' => 'LLL:EXT:path/To/The/LLL:tx_extension_domain_model_job_autojobnumber',
'config' => [
'type' => 'input',
'size' => 10,
'eval' => 'trim,int',
'readOnly' =>1,
'default' => $result,
]
);

SQL 看起来像这样:

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_extension_domain_model_job');
$getBiggestNumber = $queryBuilder
->select('autojobnumber')
->from('tx_extension_domain_model_job')
->groupBy('autojobnumber')
->orderBy('autojobnumber', 'DESC')
->setMaxResults(1)
->execute()
->fetchColumn(0);
$result = $getBiggestNumber + 1;

那么我怎样才能做到“干净”呢?

我考虑过 processCmdmap_preProcess 但我不知道如何将值传递给对应的 TCA 字段。另外,当我使用 DebuggerUtility 时,我的后端没有得到任何结果,就像我在保存对象后使用 processDatamap_afterAllOperations 时得到的结果一样。

有人能指出我正确的方向吗?

最佳答案

我认为不支持创建动态默认值,请参阅 default输入字段的属性。

然而,您可以做的是创建您自己的类型(使用它代替 type="input")。您可以使用“user”类型。 (也可以为 type="input" 创建您自己的 renderType,我从未这样做过,但为 type= "select"创建了自定义 renderType)。

您可以查看 InputTextElement 的代码,扩展它或从头开始创建您自己的代码。

例子

(稍作修改,来自文档)

ext_localconf.php:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][<current timestamp>] = [
'nodeName' => 'customInputField',
'priority' => 40,
'class' => \T3docs\Examples\Form\Element\CustomInputElement::class,
];

自定义输入元素

<?php
declare(strict_types = 1);
namespace Myvendor\MyExtension\Backend\FormEngine\Element\CustomInputElement;

use TYPO3\CMS\Backend\Form\Element\AbstractFormElement;

// extend from AbstractFormElement
// alternatively, extend from existing Type and extend it.
class CustomInputElement extends AbstractFormElement
{
public function render():array
{
$resultArray = $this->initializeResultArray();

// add some HTML
$resultArray['html'] = 'something ...';

// ... see docs + core for more info what you can set here!


return $resultArray;
}
}

关于TYPO3 TCA 使 'default' 值动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56646328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com