TYPO3 EXT:cart_product后端扩展:添加选择字段选择对应ViewHelper
TYPO3 cart_products 后端添加自定义选择字段解决方案
你把字段配置放错了位置——不能直接将表单字段配置写入模型类文件(tx_cartproducts_domain_model_product_product.php),TYPO3后端表单的显示逻辑由TCA(Table Configuration Array)控制,按以下步骤修正即可:
1. 正确配置TCA
在你的扩展中创建或编辑Configuration/TCA/tx_cartproducts_domain_model_product_product.php文件,添加字段配置并将其插入到产品类型选择框之后:
<?php defined('TYPO3') or die(); // 添加自定义字段的TCA配置 $GLOBALS['TCA']['tx_cartproducts_domain_model_product_product']['columns']['formtemplate'] = [ 'label' => 'ProductDetail Variant Form', 'config' => [ 'type' => 'select', 'renderType' => 'selectSingle', 'items' => [ ['Standard', 1], ['Matten', 2], ['Zaunpaket', 3], ], 'size' => 1, 'minitems' => 1, 'maxitems' => 1, ], ]; // 将字段插入到通用产品类型的表单中,紧跟在类型选择框后 $GLOBALS['TCA']['tx_cartproducts_domain_model_product_product']['types']['1']['showitem'] = str_replace( 'type,', 'type, formtemplate,', $GLOBALS['TCA']['tx_cartproducts_domain_model_product_product']['types']['1']['showitem'] );
2. 添加对应数据库字段
在你的扩展ext_tables.sql文件中新增字段,确保数据能正常存储:
CREATE TABLE tx_cartproducts_domain_model_product_product ( formtemplate int(11) NOT NULL DEFAULT '0' );
完成后进入TYPO3后端「维护模块」→「分析数据库结构」,执行数据库更新操作。
3. 确保扩展加载顺序
在你的ext_emconf.php中配置对cart_products的依赖,保证你的TCA配置能正确覆盖原扩展:
'dependencies' => [ 'typo3', 'cart_products', ],
完成以上步骤后刷新后端页面,就能在产品类型选择框后看到自定义的选择字段了。
内容的提问来源于stack exchange,提问作者Johannes Brunner
相关产品推荐
相关产品推荐

