You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为TYPO3 cart产品的fe variant扩展新增自定义字段

解决方法

1. 修正Extbase持久化映射

你当前的配置仅声明了自定义模型对应的数据表,未告知Extbase需要用你的子类替换原cart扩展的FeVariant类,按版本对应修改配置:

  • TYPO3 11+版本:修改myext/Configuration/Extbase/Persistence/Classes.php
<?php
declare(strict_types=1);

return [
    \Extcode\CartProducts\Domain\Model\Product\FeVariant::class => [
        'subclasses' => [
            \Vendor\myext\Domain\Model\Product\FeVariant::class,
        ],
    ],
    \Vendor\myext\Domain\Model\Product\FeVariant::class => [
        'tableName' => 'tx_cartproducts_domain_model_product_fevariant',
    ],
];
  • TYPO3 10.x及更早版本:在扩展的ext_typoscript_setup.typoscript中添加配置
config.tx_extbase.persistence.classes {
    Extcode\CartProducts\Domain\Model\Product\FeVariant {
        subclasses {
            Vendor\myext\Domain\Model\Product\FeVariant = Vendor\myext\Domain\Model\Product\FeVariant
        }
    }
    Vendor\myext\Domain\Model\Product\FeVariant {
        mapping.tableName = tx_cartproducts_domain_model_product_fevariant
    }
}

2. 调整扩展加载优先级

在你扩展的ext_emconf.php中添加cart_products依赖,确保你的扩展晚于cart_products加载,避免映射规则被覆盖:

$EM_CONF[$_EXTKEY] = [
    // 其余原有配置保持不变
    'constraints' => [
        'depends' => [
            'typo3' => '你的站点TYPO3版本范围,例如11.5.0-11.5.99',
            'cart_products' => '对应cart_products扩展的版本范围',
        ],
    ],
];

3. 清理系统缓存

进入TYPO3后台清理全部系统缓存,包括DI容器缓存、持久化映射缓存,开发环境可直接删除项目根目录下var/cache文件夹内所有内容。

配置生效后,前端模板中直接通过{feVariant.note}即可获取到字段值。


内容的提问来源于stack exchange,提问作者Geee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 01:27:04